Použil jsem k tomu taskset. Pokud máte nainstalovanou sadu úloh, něco jako:
taskset -cp 0,2 45678
by nastavil proces s ID 45678 tak, aby měl afinitu k procesoru 1 a 3.
Uvnitř procesu by volání bylo sched_setaffinity()
nebo pro pthreads pthread_setaffinity_np()
V související poznámce, pokud se obáváte o afinitu CPU vašeho programu, může být užitečné věnovat pozornost tomu, jak provádí alokaci paměti. Větší systémy s pamětí připojenou k více než jednomu řadiči (tj. více zásuvkám CPU, z nichž každý má svůj vlastní) budou mít proměnnou latenci a šířku pásma mezi různými páry CPU-paměť. Budete se také chtít podívat na afinitu NUMA pomocí numactl
příkaz nebo systémová volání, se kterými pracuje. Jeden program, na kterém jsem pracoval, se díky tomu zlepšil o 10 %.
Musíte nainstalovat schedutils
(Linuxové plánovací nástroje). Používám to na své ploše Ubuntu.
SF odkaz