本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 AL2023 核心上使用多世代 LRU (MGLRU)
多世代 LRU
傳統 LRU 機制使用雙清單模型 (主動和非主動) 來追蹤頁面使用情況,這在具有大型工作集的現代工作負載中可能會變得效率低下。MGLRU 將其取代為多個「世代」頁面,允許核心根據更精細的老化資訊做出更明智的決策。
MGLRU 的優點包括:
-
更好的回收決策:更準確地識別冷 (未使用的) 頁面。
-
降低延遲並改善輸送量:特別是對於具有大型地址空間或許多並行程序的工作負載。
-
改善快取保留:最近使用的頁面不太可能過早移出。
-
可擴展且鎖定效率的設計:在具有許多 CPUs機器上表現更好。
組態和調校
在 AL2023 核心上CONFIG_LRU_GEN
啟用核心組態。這會在 MGLRU 中編譯,但預設不會啟用它。
可以使用 /sys/kernel/mm/lru_gen/enabled
檔案啟用和調校 MGLRU。值為位元遮罩。建議啟用所有元件,除非其中一些元件有不良的副作用。
位元 | 元件 |
---|---|
0 |
多世代 LRU 的主開關。 |
1 |
當 MMU 設定時 (例如在 x86 上),以大型批次清除分葉頁面資料表項目中存取的位元。此行為理論上會加重鎖定爭用 (mmap_lock )。如果停用,對於連續映射熱頁面的工作負載,多世代 LRU 將遭受輕微的效能降低,其存取的位元可以由較少的較大批次清除。 |
2 |
當 MMU 設定時 (例如在 x86 上),也會清除非分葉頁面資料表項目中存取的位元。此行為未在 Intel 和 AMD 以外的 x86 變體上驗證。如果停用,多世代 LRU 的效能下降將可忽略。 |
[yYnN] |
啟用/停用上述所有元件。 |
如何啟用 MGLRU 的範例:
[ec2-user ~]$
echo y >/sys/kernel/mm/lru_gen/enabled
這會啟用所有元件:
[ec2-user ~]$
cat /sys/kernel/mm/lru_gen/enabled
0x0007