Dzisiaj opublikowano nowy zestaw poprawek umożliwiających planowanie klastrów dla procesorów hybrydowych x86. Z kolei ta ostatnia próba planowania klastrów dla nowoczesnych procesorów Core Alder Lake i nowszych przynosi pewne niewielkie korzyści wydajnościowe w porównaniu z obecnym kodem.
Planowanie klastrów było wcześniej podejmowane przez inżynierów Intela dla Linuksa, ale ostatecznie powodowało regresje… Naświetliłem ten problem w 2021 r. w artykule Nowe planowanie klastrów Linuksa 5.16 powoduje regresję, dalsze szkody dla Alder Lake. Teraz jednak to najnowsze planowanie klastrów x86 dla procesorów hybrydowych powinno być w lepszym stanie.
Inżynier firmy Intel, Tim Chen, opublikował serię dzisiejszych poprawek i skomentował:
“Domena planowania klastrów nie jest włączona na hybrydowych procesorach x86, ponieważ logika jest brakuje do prawidłowego równoważenia obciążenia między klastrem z procesorami SMT w jednym rdzeniu a klastrem z wieloma procesorami Atom.
Ricardo niedawno wprowadził serię poprawek, które znacznie poprawiły logikę równoważenia obciążenia między rdzeniami P i rdzeniami E w procesorach hybrydowych x86.
https://lore.kernel.org/lkml/[email protected]/T/#m16ebc8de64dbf4c54adebab701b42b47805105f4Jednak ta seria poprawek nie wystarczy, aby włączyć planowanie klastrów na hybrydowych procesorach x86. Ta seria poprawek zawiera kilka dodatkowych poprawek potrzebnych do równoważenia obciążenia między klastrami sched group składająca się z procesorów SMT z dużymi rdzeniami i klastra sched group składającego się z procesorów Atom.Dzięki tym poprawkom nakładanym na serię poprawek Ricardo obciążenie jest odpowiednio równoważone między klastrami P-core i E-core. Nieużywane procesory są używane we właściwej kolejności:
1) procesor SMT na bezczynnym rdzeniu P,
2) bezczynny rdzeń E,
3) nieużywany procesor SMT z zajętym rodzeństwem.”
Dzięki tym nowym poprawkom inżynier firmy Intel stwierdził nawet kilkuprocentową poprawę w swoich hybrydowych testach procesora P/E:
“Przetestowałem kilka jednowątkowych testów porównawczych w Pakiet Phoronix, który wcześniej wykazywał regresje, gdy po raz pierwszy włączono planowanie klastrów. Planowanie klastrów przy użyciu tej serii poprawek działa równie dobrze jak jądro waniliowe.
Single Threaded 6.3-rc5 z klastrem Ulepszenia
Planowanie testów porównawczych wydajności
(odchylenie run-run)
——————————————————————————————-
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%W przypadku wielowątkowych testów porównawczych wypróbowałem kernel build i tensor flow lite. Planowanie klastrów sprawdziło się najlepiej w przypadku 10 wątków, w którym 6 wątków działa na rdzeniach P, 2 wątki na jednym klastrze Atom i 2 wątki na drugim klastrze Atom. Podczas gdy jądro waniliowe będzie miało 6 wątków na rdzeniach P, 4 wątki na jednym klastrze Atom. Chociaż różnice są niewielkie i mieszczą się w ramach wariantów przebiegu.
Wielowątkowa wersja 6.3-rc5 z klastrem Ulepszenia
Planowanie testów porównawczych wydajności
(-#threads) (odchylenie run-run)
——————————————————————————————-
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%”
Ciekawe będzie zobaczyć, jak wypadnie ta nowa próba planowania klastrów, chociaż jest to za późno, aby zobaczyć w cyklu v6.4, więc nie byłby teraz głównym bohaterem przynajmniej do v6.5. W każdym razie, ponieważ mam czas na przetestowanie nowych łatek, wypróbuję je na Alder Lake i Raptor Lake, aby zobaczyć, jak wpływa to na wydajność Linuksa w szerszym zakresie obciążeń.
Zobacz ten wątek listy mailingowej jądra, jeśli jesteś zainteresowany najnowszą pracą dotyczącą planowania klastrów dla hybrydowych procesorów Intel.