Yanıtlar:
Sürecin içinde, çağrı sched_setaffinity()ya da pthreads işleri içinpthread_setaffinity_np()
İlgili bir notta, programınızın CPU benzeşimi hakkında endişeleniyorsanız, bellek tahsisinin nasıl yapıldığına dikkat etmek faydalı olabilir. Birden fazla denetleyiciye bağlı bellek bulunan daha büyük sistemler (yani her biri kendi başına olan çoklu CPU soketleri), farklı CPU-bellek çiftleri arasında değişken gecikme ve bant genişliğine sahip olacaktır. numactlKomutu veya çalıştığı sistem çağrılarını kullanarak da NUMA yakınlığına bakmak isteyeceksiniz . Çalıştığım bir program bundan% 10 oranında performans artışı sağladı.
Yüklemeniz gerekir schedutils(Linux zamanlayıcı yardımcı programları). Ubuntu Masaüstümde kullandım.
SF bağlantısı
taskset -c 1-3 ./a.out arg1 arg2
a.outİşlemi 1, 2 veya 3 (sıfır temelli) olan işlemcilere ayarlanan verilen argümanlar ve yakınlık ile başlatır .
İşte eylem görmek için kullanılabilecek minimal bir C test programı: https://stackoverflow.com/questions/10490756/how-to-use-sched-getaffinity-and-sched-setaffinity-in-linux-from -c / 50117787 # 50117787
taskset -p -c 1,3 45678yerinetaskset -c 1,3 -p 45678; yani, o-c 1,3a, maske özellikleri ve, örneğin, arasında yerleştirilmelidir-pvepid.