基于AMD EPYC平臺的Linux內(nèi)核5.0?5.9基準測試表明,正在開發(fā)的Linux內(nèi)核5.9在某些工作負載條件下降低了性能問題。 據(jù)報道,此問題主要發(fā)生在測試項目中,例如Apache HTTPD Web服務器。 為了解決這個問題,由Linus Torvalds領(lǐng)導的開發(fā)團隊決定一分為二,并提出了一種基于側(cè)鎖公平性的解決方案。
這個問題的底層原理有些復雜,簡單講就是由于頁面鎖太講究“公平性”,有時反而會導致性能的倒退。
Linus Torvalds 和其他開發(fā)者共同研究了如何進一步改善頁面鎖定行為,并于今日將一個短期解決方案合并到了 Linux 5.9 的主線補丁更新中。
這項名叫 2a9127fcf229 的合并提交(mm: rewrite wait_on_page_bit_common() logic"),允許更改頁面鎖中控制非公平性的參數(shù)。若在有鎖的情況下等待,系統(tǒng)就會嚴格按照順序來調(diào)動數(shù)據(jù)。
這項修訂旨在消除長期存在的“看門狗”故障,其涉及在極端負載狀況下的頁面鎖定。在此過程中,如果遭到其它頁面的鎖定,相關(guān)進程很可能陷入永久等待。
此外雖然 Linux 5.9 在某些基準測試項目上的跑分很是亮眼,但副作用卻是導致其它一些基準測試項目的性能出現(xiàn)大幅滑退,比如平均延遲和吞吐量的惡化。
本次修訂并非完全撤銷此前的策略,而是引入了對頁面鎖定非公平性的可控制方案。雖然默認設(shè)置已經(jīng)相對均衡,但有需要的開發(fā)者仍可通過 sysctl 接口進行調(diào)整。
顯然,這些方案都圍繞著頁面鎖定的重要性、以及某些鎖定狀況下的競爭程度來展開,但主要的爭論似乎與 IO 無關(guān)(頁面鎖的起源)、對于頁面文件的映射也是相對穩(wěn)定的(除了錯誤地插入頁表)。
此外開發(fā)者也可通過 sysctl sysctl_page_lock_unfairness(或 / proc / sys / vm / page_lock_unfairness)來調(diào)節(jié)內(nèi)核頁面鎖定的非公平性程度(默認數(shù)值 0 為公平模式)。