其他内存相关知识——Linux内存管理小结三

【Overcommit和OOM】

        在Unix中,当一个用户进程使用malloc()函数申请内存时,假如返回值是NULL,说明当前系统没有足够的可用内存。一般程序都会判断malloc返回值是null时便报错退出。

       因为进程申请内存后,可能并不会马上使用内存。所以有时候,为了系统能够运行更多的程序,它可以对于超出自身剩余内存的malloc请求也返回成功。这种行为叫做Overcommit。

       Linux下overcommit有三种策略:

         0. 启发式策略。合理的overcommit会被接受,不合理的overcommit会被拒绝。 

         1. 任何overcommit都会被接受。 

         2. 当系统分配的内存超过swap+N%*物理RAM(N%由vm.overcommit_ratio决定)时,会拒绝commit。 

        Overcommit采用哪种策略可以通过/proc/sys/vm/overcommit_memory设置(可将该参数设置为0/1/2,对应上面3中策略)。     Overcommit的百分比由vm.overcommit_ratio设置。如:

   # echo 2 > /proc/sys/vm/overcommit_memory    

   # echo 60 > /proc/sys/vm/overcommit_ratio

【大页内存与快表TLB】

       进程访问内存时,传递给CPU的是进程的虚拟内存地址,CPU需要将虚拟内存转换为物理内存地址,再去物理内存获取数据。从虚拟内存到物理内存的映射就依赖页表。

       页表是保存在物理内存中的一个页表条目集合。如果要访问的虚拟内存页之前已经映射到了物理内存,则该映射关系会被记录到页表中。后续再访问该虚拟内存地址时,CPU会通过页表中查找到的映射关系得到对应的物理地址;如果映射关系不存在,那么就会发生缺页中断,中断处理程序会完成虚拟内存到物理内存你的映射,并记录到页表中以供后续查询。

       但是内存的处理速度相比CPU来说还是慢很多。如果CPU每次访问内存都要查询页表去获取映射关系,那么必然会对性能产生较大的影响。TLB就是为了解决这个问题出现的。

       TLB(Translation Lookaside Buffer),旁路缓冲器,又称快表。TLB的作用是作为内存页表的缓冲。它是CPU中的一个内存管理单元,访问速度会和CPU处于一个量级,远高于内存。CPU需要获取内存映射时,就会先去访问TLB,如果TLB中已经缓存了所需的地址映射,那么就称为TLB命中,这样CPU就可以很快的得到虚拟地址对应的物理地址,减少了对实际内存页表的访问,提高了效率。(实际上TLB后面还有多级的高速缓存,最后才是到实际内存)

         而由于成本等因素限制,TLB不可能做的很大,一般只能缓存512个页表项,也就是记录512个虚拟内存页到物理内存页的映射关系。一般情况下,操作系统的默认内存页大小为4K。这样的话,TLB中能缓存的最多也就只有2M的内存映射关系。如果访问这2M的内存,TLB可以命中,那么CPU可以很快的获取映射关系;如果访问这2M以外的内存,那么TLB的作用就失去了。为了充分发挥TLB的作用,就引入了大页内存。

        大页内存(HugePages)的思想就是通过增大内存页的大小,来增加TLB中缓存的内存大小,从而增加TLB命中的概率,提高性能。比如将内存页的大小从4K增大到2M,那么TLB中512个页表项就能缓存1G内存地址空间的映射,这样相比原来的2M,TLB命中的概率大大增加。

        大页内存可以在/proc/meminfo中查看。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容