Meta/Facebook的工程師宣佈他們在THPShrinker方面的工作,這是一種讓Linux的透明頁(THP)工作更有效率的方法,主要原理是通過移除未被充分利用的透明頁來避免內存浪費。
THP對於某些工作負載來說,通過減少TLB緩存的未命中狀態可以提高效率,但是2MB與4Kb的頁面大小如果沒有得到有效利用,反而會導致大量的內存浪費。
Facebook的工程師在他們的一個平臺上發現,由於THP沒有得到充分利用,甚至讓每臺機器造成大約2.7GB的內存浪費。
Facebook正在為Linux內核開發的THP收縮機制旨在解決這種浪費,與此同時仍然可以享受THP以提高CPU效率的優勢,THP Shrinker將分割利用率最低的大內存頁面。
THP Shrinker旨在避免浪費RAM,並盡可能讓大內存頁面透明並對外開放,使其無條件地啟用,從而替代基於madevise系統調用的選擇。
Facebook的工程師們正在努力圍繞這個THP Shrinker增加額外的調整,並可能與CPU/IO/內存壓力事件掛鉤。最終,工程師希望通過THP收縮器可以直接廢除Linux的madvise THP模式,並切換到THP為所有應用程序啟用。
關於這個有趣的內核開發的更多細節,請看lore.kernel.org:
https://lore.kernel.org/lkml/[email protected]/
現在這個THP收縮器隻是500多行的新內核代碼。