5.3. 新的 /proc/sys/vm 参数

compaction_proactiveness

此参数决定了内核在后台应该压缩内存的力度。参数取 [0, 100] 范围内的值,默认值为 0。默认禁用此参数的动机是避免kthread破坏当前建立的和预期的系统行为,kthread将每500毫秒唤醒一次以移动内存。

请注意,压缩会在系统范围内有较大的影响,因为属于不同进程的页在不同位置间移动。这也可能会导致在意料外的应用程序中出现大量延迟的问题。内核使用各种 heuristics 来避免在出现主动压缩效果时出现 CPU 循环的问题。

当将此参数设置为极端值时(如 100)请小心。这可能导致过度的后台压缩活动。

watermark_boost_factor

这个参数控制内存碎片时重新声明的级别。它定义了一个区高水位线的百分比,如果在页块中混合使用不同连接的页面,则该百分比将重新声明。这样做的目的是,压缩在以后会做较少的工作,并增加将来高顺序分配(如 SLUB 分配、THP 和 hugetlbfs 页面)成功的速度。

对于 watermark_scale_factor 参数,单位是10,000的几分之一。在!DISCONTIGMEM 配置的默认值为15,000 意味着,如果一个页面块由于碎片而被混合,则最多可回收高达 150% 的高水位线。重新声明的程度由最近发生的碎片事件数量决定。如果这个值小于 pageblock,则会重新声明任意页块(例如,64 位 x86 中为 2MB)。提升因数 0 将禁用这个功能。