Jak ustawić powinowactwo procesora do procesu w systemie Linux?


Odpowiedzi:


24

Użyłem do tego zestawu zadań. Jeśli masz zainstalowany zestaw zadań, coś takiego:

taskset -c 1,3 -p 45678

ustawiłby proces o identyfikatorze 45678 na powinowactwo do cpus 1 i 3.


1
Anonimowa edycja sugerowała, że ​​polecenie musi być taskset -p -c 1,3 45678raczej niż taskset -c 1,3 -p 45678; tzn. że -c 1,3jest to specyfikacja maski i jako taka musi być umieszczona między -pa pid.
G-Man mówi „Przywróć Monikę”

7

Wewnątrz procesu będzie połączenie sched_setaffinity()lub dla pthreads rzeczy,pthread_setaffinity_np()

W powiązanej notatce, jeśli martwisz się powinowactwem procesora do twojego programu, warto zwrócić uwagę na sposób przydzielania pamięci. Większe systemy z pamięcią podłączoną do więcej niż jednego kontrolera (tj. Wielu gniazd procesora, każde z własnym) będą miały zmienne opóźnienie i szerokość pasma między różnymi parami procesora-pamięci. Będziesz także chciał sprawdzić powinowactwo NUMA, używając numactlpolecenia lub wywołań systemowych, z którymi działa. Jeden program, nad którym pracowałem, uzyskał 10% poprawę wydajności.


3

Musisz zainstalować schedutils(narzędzia do planowania w systemie Linux). Używam go na moim Ubuntu Desktop.

Link SF


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.