首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核最新的连续内存分配器(CMA)——避免预留大块内存【转】

在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着。...通过这套机制,我们可以做到不预留内存,这些内存平时是可用的,只有当需要的时候才被分配给Camera,HDMI等设备。下面分析它的基本代码流程。 1....申请连续内存 申请连续内存仍然使用标准的arch/arm/mm/dma-mapping.c中定义的dma_alloc_coherent()和dma_alloc_writecombine(),这二者会间接调用...接下来要回收page,回收page的作用是,不至于因为拿了连续的内存后,系统变得内存饥饿: -> /* * Reclaim enough pages to make sure that.../module.h> #include #include #include #include <linux

3.8K20

kvm宿主机物理内存预留方案

正常一个kvm虚拟机的管理内存大约为1.2GB左右,正常不会超过2GB 标准虚机机可用内存计算方法:     宿主机物理内存 - 系统保留内存4GB - N个虚拟机物理内存 - (N个虚拟机 * 2GB...虚拟机管理内存) 可能存在的内存浪费:     系统正常内存使用量为:2.5GB,空闲1.5GB     虚拟机管理内存通常为:1.2GB,空闲0.8GB     虚拟机内部业务未使用的物理内存:大小不定...  (通常不能复用) 避免内存浪费方法:     增加虚拟内存,使用swap分区。    ...正常大小应该设置为可能浪费的内存大小加上2GB保底内存。...分区避免内存浪费的方法还是比较靠谱的,此时虚机机可用内存计算方法为:     宿主机虚拟内存大小 - 系统保留内存4GB - N个虚拟机物理内存 - (N个虚拟机 * 2GB虚拟机管理内存

2.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    全志D1-H芯片 如何在 Linux Device Tree 中配置预留内存

    前言 有时我们需要在 Linux 内核中预留一部分内存空间用作特殊用途(给安全模块使用,给其它处理器使用,或是给特定的驱动程序使用等),在 Device Tree 中有提供两种方法对预留内存进行配置:memreserve...memreserve memreserve 的使用方法比较简单,如下所示,会将从地址 0x40000000 开始共 1MB 的内存空间预留出来: /memreserve/ 0x40000000 0x00100000...; 使用 memreserve 预留出来的内存一般无法再被 Linux 系统使用(当然,也可以通过特殊方法让代码固定访问该地址,但这种并非标准用法,在此不展开描述)。...CMA 内存池,而是来源于该预留内存: /* Initialize reserved memory resources */ rc = of_reserved_mem_device_init(dev...有时我们不需要将预留内存分配给特定的设备驱动,而只是想给默认 CMA 内存池分配一片固定的内存区域,这时我们可配置上“reusable”和“linux,cma-default”: reserved-memory

    25410

    SAP 详解Reservation (预留)

    但这里就特意有一点俺没说,呵,用RESERVATION 预留也可以实现。如何实现?慢慢看下去就知道了。 预留的目的 预订的目的是我了保证物料在需要它的时候是可用的。...预留的结构 ? 手动/ 自动预留 SAP系统支持手动和自动的预订。手动的预订由用户直接输入。自动的预订由系统自动生成。有两类自动预订: ?...操作与讲解 建立预留 ? 建立手工预留的方式,有两个 一是没有任何参考,二是有参考。 只是建议方法,没什么本质的区别,其实这个图有点没意思,哈。 TCODE: MB21 ?...如果后台设定了allow movements 设定为10工作天, delete为30工作天 如果预留的管理报表(MBVR)的基本日期 + 10 days >= 预留的需求日期时,则此预留允许货物移动 如果预留的需求日期...MVT设定当建立预留的时候,是否自动选中MVT ALLOW CHECK BOX DAYS M 表示预留管理中的第1个日期 (allow movement) Rete表示预留管理中的第2个日期 (delete

    6.9K61

    Kubernetes 资源预留配置

    Sep 09 17:57:36 ydzs-node4 kubelet[20427]: I0909 17:57:36.382811 20427 cgroup_manager_linux.go:273]...内存,因为目前 kernel 使用的内存并不记在 Kubernetes 的 pod 上。...但是在执行 system-reserved 预留操作时请加倍小心,因为它可能导致节点上的关键系统服务 CPU 资源短缺或因为内存不足而被终止,所以如果不是自己非常清楚如何配置,可以不用配置系统预留值。...节点级别的内存压力将导致系统内存不足,这将影响到整个节点及其上运行的所有 Pod,节点可以暂时离线直到内存已经回收为止,我们可以通过配置 kubelet 驱逐阈值来防止系统内存不足。...我们通过 --eviction-hard 预留一些内存后,当节点上的可用内存降至保留值以下时,kubelet 将尝试驱逐 Pod, $ kubectl describe node ydzs-node4

    3.9K50

    SAP 预留(Reservation)详解

    预留能够在工厂和仓库层次创建。对于按批次管理的料,也能在批次层次建预留。 系统支持手工和自动预留。...用户不能直接手工更改系统自动预留,必须通过修改发起预留的事务对象单据来间接修改,例如改动工单的量,系统则会自动更新预留量。 预留后在系统中的结果: 1.系统创建预留单,做为物料需求凭证。...2.在物料主数据中,总存库和非限制库存量维持不变,预留库存增加预留的量。 3.在MRP该料可用量减少了预留量。这可在MRP清单中查到,并在需求计划文件中增加一条明细条目。...三、预留还有一个作用,就是可以控制预留的物料不被移动,只能被预留部门使用。...锁料与预留概念理解上差不多,也有的软件叫冻结,不光订单有预留,提单等一些单据也有预留的功能,预留的概念就是提前占用,等结束结束后自动释放,比如销售订单给A客户100台电脑,在做订单时提前预留(前提是库存可用量必须大于等于

    1.9K10

    Kubernetes Node资源预留

    我们知道,当 Pod 里面内存不足时,会触发 Cgroup 把 Pod 里面的进程杀死;当系统内存不足时,就有可能触发系统 OOM,这时候根据 oom score 来确定优先杀死哪个进程,而 oom_score_adj...所以,预留一定的资源给系统和 K8S 管理服务,非常有必要。 预留多少资源 K8S 1.5 支持 CPU 和 RAM 两种资源的预留,更高版本支持 Disk 资源的预留。...调度器保证这个节点上的所有 pod 请求的内存总量不超过 28.5Gi,存储不超过 88Gi。...当 pod 的内存使用总量超过 28.5Gi或者磁盘使用总量超过 88Gi 时,Kubelet 将会驱逐它们。...当没有执行 kube-reserved 或 system-reserved 且系统守护进程使用量超过其预留时,如果节点内存用量高于 31.5Gi 或存储大于 90Gi,kubelet 将会驱逐 pod。

    3.4K20

    SAP 预留(Reservation)详解

    预留能够在工厂和仓库层次创建。对于按批次管理的料,也能在批次层次建预留。 系统支持手工和自动预留。...用户不能直接手工更改系统自动预留,必须通过修改发起预留的事务对象单据来间接修改,例如改动工单的量,系统则会自动更新预留量。 预留后在系统中的结果: 1.系统创建预留单,做为物料需求凭证。...2.在物料主数据中,总存库和非限制库存量维持不变,预留库存增加预留的量。 3.在MRP该料可用量减少了预留量。这可在MRP清单中查到,并在需求计划文件中增加一条明细条目。...三、预留还有一个作用,就是可以控制预留的物料不被移动,只能被预留部门使用。...锁料与预留概念理解上差不多,也有的软件叫冻结,不光订单有预留,提单等一些单据也有预留的功能,预留的概念就是提前占用,等结束结束后自动释放,比如销售订单给A客户100台电脑,在做订单时提前预留(前提是库存可用量必须大于等于

    2K10

    Linux - Linux内存管理

    移除交换空间 ---- 概念 内存管理是Linux系统重要的组成部分。...为了解决内存紧缺的问题,Linux引入了虚拟内存的概念。为了解决快速存取,引入了缓存机制、交换机制等。...当需要用到原始内容时,这些信息会被重新从交换空间读入物理内存Linux内存管理采取的是分页存取机制。...要深入了解Linux内存运行机制,需要知道下面提到的几个方面。 首先,Linux系统会不时地进行页面交换操作,以保持尽可能多的空闲物理内存。...其次,Linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存中,Linux内核根据“最近最经常使用”算法,仅仅将一些不经常使用的页面文件交换到虚拟内存中。

    52.4K41

    Linux内存描述之内存节点node--Linux内存管理(二)

    CPU访问本地内存的速度比访问远程内存的速度要快 Linux适用于各种不同的体系结构, 而不同体系结构在内存管理方面的差别很大....因此linux内核需要用一种体系结构无关的方式来表示内存....因此linux内核把物理内存按照CPU节点划分为不同的node, 每个node作为某个cpu结点的本地内存, 而作为其他CPU节点的远程内存, 而UMA结构下, 则任务系统中只存在一个内存node, 这样对于...系统中的NUMA结点都是从0开始编号的 3.1 linux-2.4中的实现 pgdat_next指针域和pgdat_list内存结点链表 而对于NUMA结构的系统中, 在linux-2.4.x之前的内核中所有的节点...-3.x~4.x的实现 node_data内存节点数组 在新的linux3.x~linux4.x的内核中,内核移除了pg_data_t的pgdat_next之指针域, 同时也删除了pgdat_list链表

    7.9K21

    Linux内存描述之内存页面page--Linux内存管理(四)

    1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一个...内存中的每个节点都是由pg_data_t描述,而pg_data_t由struct pglist_data定义而来, 该数据结构定义在include/linux/mmzone.h, line 615, 每个结点关联到系统中的一个处理器...是系统中预留的可用内存空间, 不能被内核直接映射. 最后页帧(page frame)代表了系统内存的最小单位, 堆内存中的每个页都会创建一个struct page的一个实例....简单来说, 页是一个数据块, 可以存放在任何页框(内存中)或者磁盘(被交换至交换分区)中 我们今天就来详细讲解一下linux下物理页帧的描述 2 页帧 内核把物理页作为内存管理的基本单位....3.2 内存页标识pageflags 其中最后一个flag用于标识page的状态, 这些状态由枚举常量enum pageflags定义, 定义在include/linux/page-flags.h?

    8.4K11

    Linux内存描述之概述--Linux内存管理(一)

    2 (N)UMA模型中linux内存的机构 Linux适用于各种不同的体系结构, 而不同体系结构在内存管理方面的差别很大. 因此linux内核需要用一种体系结构无关的方式来表示内存....而内存管理的其他地方则认为他们就是在处理一个(伪)NUMA系统. 2.2 Linux物理内存的组织形式 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点...是系统中预留的可用内存空间, 不能被内核直接映射. 最后页帧(page frame)代表了系统内存的最小单位, 堆内存中的每个页都会创建一个struct page的一个实例....页的数据结构对象都保存在mem_map全局数组中,该数组通常被存放在ZONE_NORMAL的首部,或者就在小内存系统中为装入内核映像而预留的区域之后。...2.6 高端内存 由于能够被Linux内核直接访问的ZONE_NORMAL区域的内存空间也是有限的,所以LINUX提出了高端内存(High memory)的概念,并且允许对高端内存的访问

    6.9K30

    Linux内存描述之内存区域zone--Linux内存管理(三)

    是系统中预留的可用内存空间, 不能被内核直接映射....Linux使用enum zone_type来标记内核所支持的所有内存区域 3.1 内存区域类型zone_type zone_type结构定义在include/linux/mmzone.h, 其基本信息如下所示...ZONE_NORMAL类型的内存区域直接被内核映射到线性地址空间上面的区域(line address space),ZONE_HIGHMEM将保留给系统使用,是系统中预留的可用内存空间,不能被内核直接映射...位系统中, Linux内核虚拟地址空间只有1G, 而0~895M这个986MB被用于DMA和直接映射, 剩余的物理内存被成为高端内存....分别为 WMAKR_MIN, WMARK_LOW, WMARK_HIGH 水位, 这在页面分配器和 kswapd 页面回收中会用到 lowmem_reserve[MAX_NR_ZONES] zone 中预留内存

    9.4K31

    Linux内存管理

    本篇介绍 本篇介绍下Linux内存管理,用系统角度看内存的寻址和分配机制。 内容介绍 内存管理应该是系统中最难的模块之一了,而且历史也悠久,就先来简单回顾下。...分页机制可以完全避免内存碎片问题么? 公布下答案: 的确有分页机制就可以完全不需要分段机制,目前linux是在分段的基础上实现了分页,这个也有考虑到是兼容性问题。...; /* for /proc/PID/auxv */ struct percpu_counter rss_stat[NR_MM_COUNTERS]; struct linux_binfmt...mmap流程如下: image.png 缺页异常 linux 是在不得不使用物理内存的时候才会分配物理内存。这句话该怎么理解呢?...因此看到物理可用内存不足并不表示需要换物理内存条了。

    13.8K51

    Linux 内存管理

    操作系统内存管理包括物理内存管理和虚拟内存管理:       我们这篇主要介绍Linux的虚拟内存管理。...物理内存管理在另外一篇:《操作系统内存管理(思维导图详解)》       1、程序的进程在内存的数据结构  一.Linux 进程在内存数据结构 ---- 1、存储(没有调入内存)阶段:       可以看到一个可执行程序在存储...Linux仅把可执行映像的一小部分 装入物理 内存. 当需要访问未装入的页面时 . 系统产生一个缺页中断 , 把需要的页读入 物理内存。 ...把页装入物理内存。   ·   五.swap对换空间 ----      32位Linux系统的每个进程可以有4 GB的虚拟 内存空间 ....例如:32位Linux的每个用户进程都可以访问4GB的线性地址空间, 而实际的物理内存可能远远少于4GB. 采用分页机制 ,Linux仅把可执行映像的一小部分装入物理内存

    7.7K10
    领券