今天發布了一組新補丁,以啟用 x86 混合 CPU 的集群調度。反過來,針對 Alder Lake 和更新版本的現代核心 CPU 的集群調度的最新嘗試正在產生比當前代碼一些小的性能優勢。

英特爾工程師之前曾嘗試過針對 Linux 進行集群調度,但最終導致了性能下降……我在 2021 年強調了這個問題,Linux 5.16 的新集群調度導致性能下降,進一步損害了 Alder Lake。現在,雖然這個最新的混合 CPU 的 x86 集群調度應該處於更好的狀態。

英特爾工程師 Tim Chen 發布了今天的補丁系列並在其中評論:

“集群調度域在 x86 混合 CPU 上未啟用,因為邏輯是缺少在單核 SMT CPU 集群和多 Atom CPU 集群之間進行適當的負載平衡。

Ricardo 最近推出了一個補丁系列,大大改進了 x86 混合 CPU 上 P 核和 E 核之間的負載平衡邏輯。
https://lore.kernel.org/lkml/[email protected]/T/#m16ebc8de64dbf4c54adebab701b42b47805105f4

但是,該補丁系列不足以允許在混合 x86 CPU 上啟用集群調度。該補丁系列提供了集群之間負載平衡所需的一些額外修復由Big cores的SMT CPU組成的sched group和由Atom CPU組成的集群sched group. 在Ricardo的補丁系列之上應用這些補丁,負載在P-core和E-core集群之間得到了適當的平衡。空閒 CPU 按正確順序使用:

1) 空閒 P 核上的 SMT CPU,
2) 空閒 E 核,
3) 未使用的 SMT CPU 和一個繁忙的兄弟。 “

有了這些新補丁,英特爾工程師發現他的 P/E 混合 CPU 測試提高了幾個百分點:

“我在Phoronix 套件先前在首次啟用集群調度時顯示出回歸。使用此補丁系列的集群調度與 vanilla 內核的性能一樣好。

Single Threaded 6.3-rc5 with cluster Improvement
Benchmark scheduling in Performance
(run-run deviation)
————————————————————————————
tjbench (+/-0.08%) (+/-0.23%)-0.23%
PhPbench (+/-0.31%) (+/-0.89%)-0.39%
flac (+/-0.58%) (+/-0.22%) +0.17%
pybench (+/-3.16%) (+/-0.27 ) +2.55%

對於多線程基準測試,我嘗試了 kernel build 和 tensor flow lite。集群調度最適合 10 線程的情況,其中 6 個線程在 P 核上運行,2 個線程在一個 Atom 集群上運行,2 個線程在另一個 Atom 集群上運行。而 vanilla 內核將在 P 核上有 6 個線程,在一個 Atom 集群上有 4 個線程。儘管差異很小並且屬於運行差異。

Multi Threaded 6.3-rc5 with cluster Improvement
Benchmark scheduling in Performance
(-#threads) (run-run deviation)
————————————————————————————
Kbuild-8 (+/-2.90%) (+/-1.16%)-0.76%
Kbuild-10 (+/-3.08%) (+/-3.09%) +0.64%
Kbuild-12 (+/-3.28%) (+/-3.55%) +0.91%
Tensor Lite-8 (+/-4.84%) (+/-4.61%)-0.23%
Tensor Lite-10 (+/-0.87%) (+/-1.45%) +0.47%
Tensor Lite-12 (+/-1.37%) (+/-1.04%)-0.12%”

儘管它是在 v6.4 週期中看到太晚了,所以現在至少要到 v6.5 才能成為主線。無論如何,我有時間測試新補丁,我會在 Alder Lake 上試一試Raptor Lake,了解它如何在更廣泛的工作負載範圍內影響 Linux 性能。

請參閱 這個內核郵件列表線程如果對英特爾混合 CPU 的最新集群調度工作感興趣的話。

Categories: IT Info