Jawaban:
Di dalam proses, panggilan akan sched_setaffinity()
, atau untuk hal-hal pthreads,pthread_setaffinity_np()
Pada catatan terkait, jika Anda khawatir tentang afinitas CPU dari program Anda, mungkin ada baiknya untuk memperhatikan bagaimana ia melakukan alokasi memori juga. Sistem yang lebih besar dengan memori yang terpasang pada lebih dari satu pengontrol (yaitu beberapa soket CPU, masing-masing dengan soketnya sendiri) akan memiliki latensi variabel dan bandwidth antara pasangan CPU-memori yang berbeda. Anda juga ingin melihat afinitas NUMA, menggunakan numactl
perintah atau panggilan sistem yang berfungsi. Satu program yang saya kerjakan mendapat peningkatan kinerja 10% dari ini.
taskset -c 1-3 ./a.out arg1 arg2
meluncurkan a.out
proses dengan argumen dan afinitas yang diberikan ke prosesor 1, 2 atau 3 (berbasis nol).
Berikut ini adalah program uji C minimal yang dapat digunakan untuk melihatnya beraksi: https://stackoverflow.com/questions/10490756/how-to-use-sched-getaffinity-and-sched-setaffinity-in-linux-from -c / 50117787 # 50117787
taskset -p -c 1,3 45678
daripadataskset -c 1,3 -p 45678
; yaitu, bahwa spesifikasi topeng-c 1,3
adalah dan, dengan demikian, harus ditempatkan di antara dan .-p
pid