Linux 5.9將改進頁面鎖以解決性能倒退的問題
Phoronix報導稱,基於AMD霄龍(EPYC)平台的Linux 5.0 ~ 5.9內核基準測試表明,開發中的Linux 5.9內核在某些工作負載情況下存在性能退化的問題。據悉,該問題主要出現在Apache HTTPD Web服務器等測試項目中。為了解決這個問題,由Linus Torvalds主導的開發團隊決定將之一分為二,並提出了基於頁面鎖定公平性的解決方案。

(來自:Phoronix)
這個問題的底層原理有些複雜,簡單講就是由於頁面鎖太講究“公平性”,有時反而會導致性能的倒退。
Linus Torvalds 和其他開發者共同研究瞭如何進一步改善頁面鎖定行為,並於今日將一個短期解決方案合併到了Linux 5.9 的主線補丁更新中。

這項名叫2a9127fcf229 的合併提交(mm: rewrite wait_on_page_bit_common() logic”),允許更改頁面鎖中控制非公平性的參數。若在有鎖的情況下等待,系統就會嚴格按照順序來調動數據。

這項修訂旨在消除長期存在的“看門狗”故障,其涉及在極端負載狀況下的頁面鎖定。在此過程中,如果遭到其它頁面的鎖定,相關進程很可能陷入永久等待。

此外雖然Linux 5.9 在某些基準測試項目上的跑分很是亮眼,但副作用卻是導致其它一些基準測試項目的性能出現大幅滑退,比如平均延遲和吞吐量的惡化。

本次修訂並非完全撤銷此前的策略,而是引入了對頁面鎖定非公平性的可控制方案。雖然默認設置已經相對均衡,但有需要的開發者仍可通過sysctl 接口進行調整。

顯然,這些方案都圍繞著頁面鎖定的重要性、以及某些鎖定狀況下的競爭程度來展開,但主要的爭論似乎與IO 無關(頁面鎖的起源)、對於頁面文件的映射也是相對穩定的(除了錯誤地插入頁表)。

此外開發者也可通過sysctl sysctl_page_lock_unfairness(或/ proc / sys / vm / page_lock_unfairness)來調節內核頁面鎖定的非公平性程度(默認數值0 為公平模式)。