避免物理内存碎片化 - ZONE_MOVABLE_non-page pool-程序员宅基地

技术标签: linux kernel memory  Linux Kernel  

在2.6.20-rc6中,mel Gorman提交了的patch引入了ZONE_MOVABLE,引入这个pseudo zone的目的是为了防止zone内存碎片化

ZONE_MOVABLE表示这个zone仅能被带有__GFP_HIGHMEM和__GFP_MOVABLE标志的分配使用。这就使得所有non-movable页面都限制在单一的内存区,而movable的分配则由其他的内存区满足。这个patch可以和基于链表的防碎片patch一起使用。

Movable zone的大小由内核参数"kernelcore="指定。这个参数指定了多少内存分配给ZONE_MOVALBE。在ZONE_MOVABLE zone内的页面都可以做页面迁移或者页面回收。

当我们选择一个zone的页面用于ZONE_MOVABLE时,需要考虑两点:

首先,仅仅位于最高内存zone的内存可用于ZONE_MOVABLE。对于x86 arm平台,是ZONE_HIGHMEM;对于ppc64则是ZONE_DMA;对于x86_64则是ZONE_DMA32.

其次,内核使用的内存可能平坦的分布在多个NUMA节点。如果这些节点的尺寸不相同,就会导致内核在不同节点上使用的内存数量不同。

缺省情况下,这个zone不会被用作huge pages分配,因为huge pages分配是固定的和non-migratable。提供了一个sysctl hugepages_treat_as_movable允许在ZONE_MOVABLE上执行huge pages分配。这就意味着当系统执行了这个系统调用后,huge page pool的尺寸包含了ZONE_MOVABLE的尺寸。

除了hugh pages可以是non-ovable,作者不再引入其他可能会导致ZONE_MOVABLE外碎片的分配。




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/kickxxx/article/details/8722404

智能推荐

Sliding Window Matrix Maximum_implement a sliding-window mean filter on an n*n m-程序员宅基地

文章浏览阅读135次。Given an array ofn * mmatrix, and a moving matrix window (sizek * k), move the window from top left to botton right at each iteration, find the maximum sum inside the window at each moving.Return..._implement a sliding-window mean filter on an n*n matrix with an m*m window

Java生成5个不重复的随机数_5位随机数java-程序员宅基地

文章浏览阅读3.3k次。Java生成5个不重复的随机数$package com.sjs.cs;//生成5个不重复的随机数import java.util.Random;public class SjsTest03 {public static void main(String[] args) {//定义生成随机数对象Random r = new Random(); //定义一个5个长度的int类型数组 int arr[] = new int[5]; //给以上数组每一个元素一个初始值,值为-1_5位随机数java

rebase退出(master|REBASE)模式_git 退出rebase-程序员宅基地

文章浏览阅读3.7k次。使用 git rebase --abort退出 REABASE模式_git 退出rebase

linux 内核源码树的建立_linux 源码 stage2.c-程序员宅基地

文章浏览阅读568次。linux 内核源码树的建立http://www.cnblogs.com/Jezze/archive/2011/12/23/2299871.html 刚看 O'REILLY 写的《LINUX 设备驱动程序》时。作者一再强调在编写驱动程序时必须 建立内核树。先前的内核只需要有一套内核头文件就够了,但因为2.6的内核模块吆喝内核源码树中的目标文件连接,通过这种方式,可得到一_linux 源码 stage2.c

Promise then方法的链式调用 读取文件_怎么用then读promise的数据-程序员宅基地

文章浏览阅读268次。引入fsconst fs = require('fs');用promise读取第一个文件用resolve返回文件内容,用then方法时,value是文件的内容。const p = new Promise(function(resolve, reject) { fs.readFile('第一个.md', (err, data) => { if (err) reject(err); resolve(data); })});链式调用then方法_怎么用then读promise的数据

vscode注释乱码的最简单解决方案_百度网盘下载的代码到vscode乱码-程序员宅基地

文章浏览阅读1k次。_百度网盘下载的代码到vscode乱码

随便推点

git忽略文件.ignore以及项目问题index.lock_git ignore将index-程序员宅基地

文章浏览阅读2.6k次。如果是git的老司机,那么这个问题就很菜了。就是我们日常在本地管理后,推到远程管理,那么有一些文件我们并不想推送到远程,怎么弄?开始天真的自己竟然认为像node_modules这样的文件,git推送的时候是自动忽略的。(当时的想法是,这些文件太大了,git知道不需要)。现在回过头来,才知道多么天真。其实,需要我们自己定义规则,去考虑git需要忽略那些文件,机器再智能也需要人去操作。1、.ignor..._git ignore将index

学习笔记17 --使用matlab自带函数,将旋转矩阵计算成欧拉角_matlab旋转矩阵转欧拉角-程序员宅基地

文章浏览阅读9k次,点赞6次,收藏33次。个人环境是使用matlab2017b该公式计算欧拉角有个要求,必须是3x3的旋转矩阵(尝试过4x4的计算不了)。matlab自带的由旋转矩阵计算欧拉角公式是,rotm2eul(),可以指定旋转顺序,否则默认旋转顺序为ZYX...._matlab旋转矩阵转欧拉角

SpringCloud第九章Hystrix断路器(服务监控hystrixDashboard)_除了隔离依赖服务的调用以外,hystrix还提供了准实时的调用监控(hystrix dashboar-程序员宅基地

文章浏览阅读169次。5、服务监控hystrixDashboard5.1、概述除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud也提供了Hystrix Dashboard的整合,对监控内容转化成可视化_除了隔离依赖服务的调用以外,hystrix还提供了准实时的调用监控(hystrix dashboard

jfinal基本概述_jifinal-程序员宅基地

文章浏览阅读1.1k次。JFinal简介基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类,该类对整个web项目进行配置。JFinalConfig子类需要事项六个抽象方法1.configConstant(…)此方法用来配置JFinal常量值如开发模式常量devMode配置,会输出本次请求的URL、Controller、Method以及请求所携带的参数2.configRoute(…..._jifinal

Arthas 命令解析(jvm/thread/stack/heapdump)_arthas分析dump-程序员宅基地

文章浏览阅读3.7k次。Arthas 命令解析(jvm/thread/stack/heapdump)[Arthas](https://arthas.aliyun.com/doc/index.html)是Alibaba开源的Java诊断工具,`Arthas`支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的`Tab`自动补全功能,进一步方便进行问题的定位和诊断。Arthas 3.0使用OGNL表达式求值库,详见[OGNL表达式官网_arthas分析dump

JavaBean、MVC模式、Servlet、Servlet生命周期:5个阶段_5.mvc中,javabean的生命周期包括()三个阶段-程序员宅基地

文章浏览阅读509次。JSP访问数据库_5.mvc中,javabean的生命周期包括()三个阶段

推荐文章

热门文章

相关标签