本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 023 内核上使用多代 LRU (MGLRU) AL2
M ulti-Gen LRU
传统的 LRU 机制使用双列表模型(活动和非活动)来跟踪页面使用情况,在具有大型工作集的现代工作负载中,这可能会变得效率低下。MGLRU 用多代 “代” 页面取而代之,允许内核根据更精细的老化信息做出更明智的决策。
MGLRU 的好处包括:
-
更好的回收决策:更准确地识别冷页(未使用)。
-
更低的延迟和更高的吞吐量:特别适用于具有大地址空间或许多并发进程的工作负载。
-
提高缓存保留率:最近使用的页面不太可能过早被移出。
-
可扩展且锁定效率高的设计:在有许多机器上性能更好。 CPUs
配置和调整
在 AL2 023 内核上启用内核配置CONFIG_LRU_GEN
。这在 MGLRU 中编译,但默认情况下不启用。
可以使用该文件启用和调整 MGLRU。/sys/kernel/mm/lru_gen/enabled
该值是一个位掩码。建议启用所有组件,除非其中一些组件有不良副作用。
位 | 组件 |
---|---|
0 |
多代 LRU 的主开关。 |
1 |
当 MMU 设置时(例如,在 x86 上),大批量清除叶页表条目中的访问位。从理论上讲,这种行为会加剧锁争用 ()。mmap_lock 如果将其禁用,则对于连续映射热页的工作负载,多代 LRU 的性能将略有下降,否则可以用更少的大批次清除热点页面的访问位。 |
2 |
当 MMU 设置时(例如,在 x86 上),也要清除非叶页表条目中的访问位。除英特尔和AMD外,此行为未在x86版本上得到验证。如果将其禁用,则多代 LRU 的性能下降可以忽略不计。 |
[yYnN] |
Enable/disable 以上所有组件。 |
如何启用 MGLRU 的示例:
[ec2-user ~]$
echo y >/sys/kernel/mm/lru_gen/enabled
这将启用所有组件:
[ec2-user ~]$
cat /sys/kernel/mm/lru_gen/enabled
0x0007