Saya mencoba menjalankan benchmark multi-threaded pada satu set CPU yang terisolasi. Singkat cerita, saya awalnya mencoba isolcpus
dan taskset
, tetapi mengalami banyak masalah . Sekarang saya bermain dengan cgroups / csets.
Saya pikir kasus penggunaan "sederhana" cset shield
harus bekerja dengan baik. Saya memiliki 4 core, jadi saya ingin menggunakan core 1-3 untuk benchmarking (saya juga mengkonfigurasi core ini untuk berada dalam mode ticks adaptif), maka core 0 dapat digunakan untuk yang lainnya.
Mengikuti tutorial di sini , seharusnya sesederhana:
$ sudo cset shield -c 1-3
cset: --> shielding modified with:
cset: "system" cpuset of CPUSPEC(0) with 105 tasks running
cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running
Jadi sekarang kita memiliki "tameng" yang terisolasi (cset pengguna) dan inti 0 untuk yang lainnya (cset sistem).
Baiklah, sejauh ini terlihat bagus. Sekarang mari kita lihat htop
. Semua proses harus dimigrasi ke CPU 0:
Hah? Beberapa proses ditunjukkan berjalan di inti terlindung. Untuk mengesampingkan kasus bahwa htop memiliki bug, saya juga mencoba menggunakan taskset
untuk memeriksa topeng afinitas dari suatu proses yang ditunjukkan berada dalam perisai.
Mungkin tugas-tugas itu tidak bergerak? Mari kita memetik proses sewenang-wenang yang ditunjukkan berjalan pada CPU3 (yang seharusnya ada di dalam perisai) htop
dan lihat apakah itu muncul di cgroup sistem menurut cset
:
$ cset shield -u -v | grep 864
root 864 1 Soth [gmain]
vext01 2412 2274 Soth grep 864
Yap, itu berjalan pada sistem cgroup menurut cset
. Jadi htop
dan cset
tidak setuju.
Jadi apa yang terjadi di sini? Siapa yang saya percayai: cpu afinities ( htop
/ taskset
) atau cset
?
Saya curiga bahwa Anda tidak seharusnya menggunakan cset
dan kedekatan bersama. Mungkin perisai bekerja dengan baik, dan saya harus mengabaikan topeng afinitas dan htop
output. Either way, saya menemukan ini membingungkan. Adakah yang bisa menjelaskan?
numactl
dan cgconfig
dan cgrules
/ cgred
untuk merampingkan apa yang Anda lakukan. Ini mungkin tersedia untuk Debian dengan beberapa pekerjaan.