linux外碎片化

外碎片化(external fragmentation)是指系统有足够的空闲内存,但是么办法分配出想要的内存卡。这是因为有很多空闲内存分散在众多的页块中,导致没法分配出一个完整和连续的大内存块。那如何检查外碎片化呢?linux内核在分配物理页面时,若发现没有办法分配出想要的物理内存,特别是大内存块,那么它会去从其他迁移类型中挪用内存(__rmqueue_fallback()函数),于是我们就认为有发生外碎片化的倾向。

从linux5.0内核开始,实现了一个临时增加水位(boost watermark)的功能,用来应对外碎片化的情况

  这个临时增加水位的优化方法时,当检查到有外碎片化倾向时,就临时提高低水位,这样就可以提前触发kswapd内核线程回收内存,然后触发kcompactd内核线程做内存规整,这样有助于快速满足分配大内存块的需求

posted @ 2023-02-28 15:37  蒲城小农  阅读(20)  评论(0编辑  收藏  举报