Muszę uruchomić testy wydajności dla mojego współbieżnego programu, a moim wymaganiem jest, aby był uruchamiany tylko na jednym rdzeniu procesora. (Nie chcę współpracować z wątkami - chcę zawsze przełączać kontekst).
Mam więc dwa pytania:
Najlepsze rozwiązanie - jak podpisać i zarezerwować tylko jeden rdzeń procesora tylko dla mojego programu (aby zmusić system operacyjny do nieużywania tego rdzenia procesora). Chyba nie jest to możliwe, ale może się mylę ...
Jak ustawić Linuksa (Fedora 24) na używanie tylko jednego rdzenia procesora?
linux
cpu
parallelism
peter55555
źródło
źródło
Odpowiedzi:
W systemie Linux wywołanie systemowe w celu ustawienia powinowactwa procesora dla procesu to
sched_setaffinity
. Następnie jesttaskset
narzędzie do wykonania tego w wierszu poleceń.Aby ten pojedynczy program działał tylko na jednym procesorze, myślę, że potrzebujesz czegoś takiego
(ustaw dowolny numer procesora jako argument
-c
przełącznika).Powinno to być wystarczająco zbliżone do systemu jednoprocesorowego, o ile twoje inne procesy nie działają zbyt szybko w porównaniu z tym, który chcesz zmierzyć, lub są planowane na inne procesory. Jeśli chcesz poświęcić jeden procesor tylko jednemu procesowi i uniemożliwić uruchamianie innych procesów na tym procesorze, musisz również ustawić ich powinowactwo.
Że ja nie wiem, jak prawidłowo zrobić. Należy ustawić powinowactwo procesora na
init
bardzo wczesnym etapie procesu rozruchu, aby mieć pewność, że zostanie on odziedziczony po wszystkich procesach w systemie. Aby obejść ten problem, możesz użyćtaskset -c -p 0 $PID
wszystkich innych procesów, aby zmusić je do działania tylko na procesorze nr 0.Systemd ma również
CPUAffinity=
kontrolowanie powinowactwa w plikach jednostkowych i istnieje kilka z pytań dotyczących ustawiania domyślnego powinowactwo tutaj na unix.SE, ale nie znaleźliśmy żadnych roztworem dobry.Chociaż @Kamil Maciorowski skomentował i odpowiedział na inne pytanie na superuser.com , ustawienie
isolcpus=1
w wierszu poleceń jądra powinno „odizolować ten procesor od ogólnych algorytmów planowania”, co jest czymś, czego możesz chcieć.źródło