Próbuję uruchomić wielowątkowe testy porównawcze na zestawie izolowanych procesorów. Krótko mówiąc, początkowo próbowałem z isolcpus
i taskset
, ale natrafiłem na problemy . Teraz gram z cgroups / cset.
Myślę, że „prosty” cset shield
przypadek użycia powinien dobrze działać. Mam 4 rdzenie, więc chciałbym użyć rdzeni 1-3 do testów porównawczych (skonfigurowałem również te rdzenie, aby były w trybie adaptacyjnych tików), a następnie rdzeń 0 można wykorzystać do wszystkiego innego.
Zgodnie z tutorialem tutaj powinno być tak proste, jak:
$ sudo cset shield -c 1-3
cset: --> shielding modified with:
cset: "system" cpuset of CPUSPEC(0) with 105 tasks running
cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running
Mamy teraz „osłonę”, która jest izolowana (zestaw użytkowników), a rdzeń 0 dotyczy wszystkiego innego (zestawu systemowego).
Dobra, na razie wygląda dobrze. Teraz spójrzmy na htop
. Wszystkie procesy powinny zostać migrowane do CPU 0:
Co? Niektóre procesy są wyświetlane jako wykonywane na ekranowanych rdzeniach. Aby wykluczyć przypadek, w którym htop ma błąd, próbowałem również użyć taskset
maski inspekcyjnej procesu pokazanego jako tarcza.
Może te zadania były nieporuszalne? Podciągnijmy dowolny proces pokazany jako działający na CPU3 (który powinien znajdować się w osłonie) htop
i zobaczmy, czy pojawia się on w grupie systemowej zgodnie z cset
:
$ cset shield -u -v | grep 864
root 864 1 Soth [gmain]
vext01 2412 2274 Soth grep 864
Tak, to działa w grupie systemowej zgodnie z cset
. Więc htop
i cset
nie zgadzam się.
Co się tu dzieje? Komu ufam: koligacje procesorów ( htop
/ taskset
) czy cset
?
Podejrzewam, że nie powinniście używać cset
razem i powinowactwa razem. Być może tarcza działa dobrze i powinienem zignorować maski koligacji i htop
dane wyjściowe. Tak czy inaczej uważam to za mylące. Czy ktoś może rzucić trochę światła?
numactl
a cgconfig
i cgrules
/ cgred
usprawnić, co robisz. Mogą być dostępne dla Debiana z pewną pracą.