有一個 Linux 內核調度程序補丁現在通過 TIP 的 sched/core 分支排隊,可以幫助在每個裸片上運行多個末級緩存(LLC/L3 緩存)的 AMD 處理器上進行任務調度。這個小改進是在 Linux 內核開發人員在他的 AMD Zen 2 台式機上發現後產生的。

這個應該合併到 Linux 6.5 的更改現在位於 tip/tip.git 的 sched/core 分支中,是一個多 LLC 感知的 select_idle_sibling() 實現。目前,當調度程序在調度程序域中尋找空閒 CPU 時,它不會在當前共享 LLC 的內核組之外查找。但是現在有了這個多有限責任公司版本,如果本地有限責任公司空了,它會考慮其他有限責任公司。

長期 Linux 內核工程師 Peter Zijlstra 的補丁解釋說:

sched/fair: Multi-LLC select_idle_sibling()

[Linux 開發人員 Tejun Heo] 報告說,當他將工作隊列定位到他的 Zen2 機器上的特定 LLC(總共有 3 個內核/LLC 和 4 個 LLC)時,他獲得了大量空閒時間。

這當然是因為select_idle_sibling() 不會考慮本地 LLC 之外的任何事情,並且由於所有這些任務都是短期運行的,因此週期性空閒負載平衡器是無效的。

雖然將工作緩存保留在本地很好,但最好不要有大量空閒時間。因此,讓 select_idle_sibling() 在本地節點變空時嘗試同一節點內的其他 LLC。

那些特別是現代 AMD 系統並希望在預期之前測試此補丁的人Linux 6.5 合併窗口可以通過 計劃/核心分支

Categories: IT Info