Powiedzmy, że mam pudełko czterordzeniowe i cztery identyczne procesy, każdy z dziesięcioma wątkami. Czy w Linuksie można powiedzieć, że Proces A może działać tylko na CPU 0, Proces B może działać tylko na CPU 1 itd.?
Powiedzmy, że mam pudełko czterordzeniowe i cztery identyczne procesy, każdy z dziesięcioma wątkami. Czy w Linuksie można powiedzieć, że Proces A może działać tylko na CPU 0, Proces B może działać tylko na CPU 1 itd.?
taskset <affinity mask> -p <process>
to znaczy
taskset 1 -p 12345
ustawić proces 12345 na używanie tylko procesora / rdzenia 1
Maska bitów może być listą (tzn. 1,3,4, aby użyć rdzeni 1 3 i 4 systemu rdzenia 4+) lub maską bitową w systemie szesnastkowym (0x0000000D 1,3,4, 0x00000001 tylko dla rdzenia 1)
taskset
jest zwykle w pakiecie o nazwie shedutils
.
Edycja: prawie zapomniałem ... Jeśli chcesz ustawić powinowactwo nowego polecenia zamiast go zmienić dla istniejącego procesu, użyj:
taskset <mask> <program> [<arg1>]...[<argN>]
użycie zestawu zadań (util-linux 2.13-pre7): zestaw zadań [opcje] [maska | cpu-list] [pid | cmd [args ...]] ustaw lub uzyskaj powinowactwo procesu
-p, --pid działają na istniejącym podanym pid -c, --cpu-list wyświetlają i określają cpus w formacie listy -h, --help wyświetlają tę pomoc -v, - informacje o wersji wyjściowej wersji
Domyślnym zachowaniem jest uruchomienie nowej komendy: zestaw zadań 03 sshd -b 1024 Można pobrać maskę istniejącego zadania: zestaw zadań -p 700 Lub ustawić: zestaw zadań -p 03 700 Format listy używa listy oddzielonej przecinkami zamiast maska: zestaw zadań-pc 0,3,7-11 700 Zakresy w formacie listy mogą przyjmować argument kroku: np. 0-31: 2 jest równoważne z maską 0x55555555
zawsze możesz zoptymalizować swój serwer, jeśli potrzebujesz