Jak ustawić powinowactwo procesora do procesu w systemie Linux?

29

Jak ustawić powinowactwo procesora do procesu w systemie Linux?

chillitom
źródło

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.

kbyrd
źródło
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.

Phil Miller
źródło
3

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

Link SF

Hemant
źródło