Dostępna jest łatka harmonogramu jądra Linuksa, która jest teraz umieszczana w kolejce za pośrednictwem gałęzi sched/core TIP, która może pomóc w planowaniu zadań na procesorach AMD z wieloma pamięciami podręcznymi ostatniego poziomu (LLC/pamięć podręczna L3) na kostkę. Ta niewielka poprawa pojawiła się po odkryciu przez programistę jądra Linuksa na jego komputerze stacjonarnym AMD Zen 2.
Ta zmiana, która powinna zostać włączona w Linuksie 6.5 teraz, gdy znajduje się w gałęzi sched/core tip/tip.git, to implementacja select_idle_sibling() świadoma wielu LLC. Obecnie, gdy program planujący szuka bezczynnego procesora w domenie programu planującego, nie będzie wyglądał poza bieżącą grupą rdzeni współdzielących LLC. Ale teraz, z tą wersją multi-LLC, rozważy inne LLC, jeśli lokalna LLC pojawi się pusta.
Łata autorstwa wieloletniego inżyniera jądra Linuksa, Petera Zijlstry, wyjaśnia:
sched/fair: Multi-LLC select_idle_sibling()
[Programista Linuksa, Tejun Heo] poinformował, że kiedy kieruje kolejki pracy do określonej LLC na swojej maszynie Zen2 z łącznie 3 rdzeniami/LLC i 4 LLC, uzyskuje znaczny czas bezczynności.
Jest to oczywiście spowodowane tym, jak select_idle_sibling() nie weźmie pod uwagę niczego poza lokalną LLC, a ponieważ wszystkie te zadania są krótkie, okresowy moduł równoważenia obciążenia bezczynności jest nieskuteczny.
I chociaż dobrze jest utrzymywać lokalną pamięć podręczną pracy, lepiej nie mieć znacznego czasu bezczynności. Dlatego poproś select_idle_sibling() o wypróbowanie innych LLC w tym samym węźle, gdy lokalny okaże się pusty.
W szczególności ci, którzy mają nowoczesne systemy AMD i chcą przetestować tę poprawkę przed oczekiwanym Okno łączenia Linuksa 6.5 można znaleźć przez gałąź sched/core.