Taskset adalah untuk mengikat suatu proses ke satu atau lebih CPU; pada dasarnya menentukan di mana ia dapat berjalan pada eksekusi awal atau saat sedang berjalan. Jika menggunakan RHEL / CentOS pada peralatan server modern, numactl
disarankan selesai taskset
.
Cpuset / cset adalah untuk melindungi CPU dan merupakan kerangka kerja di sekitar Linux cgroups. Cset tidak pernah populer di distribusi tertentu (seperti RHEL) karena ada alat lain yang tersedia untuk manajemen proses.
Perintah pertama di bawah ini menciptakan sebuah perisai yang akan membatasi tugas-tugas sistem operasi untuk inti CPU 0 dan 8. Yang kedua akan memindahkan sesi shell Anda saat ini ke perisai CPU yang ditentukan, menghasilkan isolasi sistem dan proses pengguna.
# cset shield --cpu 1-7,9-15 --kthread=on
# cset proc --move --pid=$$ --threads --toset=user
Ada hal-hal lain yang perlu diperiksa dan dicari sebelum Anda menempuh jalan proses pengikatan ke CPU; interupsi ( irqbalance
cacat parsial), pengaturan hemat daya, penjadwal sistem, elevator I / O, kebijakan waktu-nyata ( chrt
).
Lihat: Pengaturan TCP latensi rendah di Ubuntu
Berikut ini adalah contoh ( berbelit-belit ) dari pembungkus aplikasi yang memilih inti, menghentikan irqbalance, mulai dan blacklist inti yang dipilih, kemudian jalankan ./nama_program dengan SCHED_FIFO dan prioritas 99 pada inti yang dipilih.
Core=5
CoreMask=`echo "16 o 2 $Core ^ p" | dc`
service irqbalance stop
until [ "`service irqbalance status`" = "irqbalance is stopped" ] ; do sleep 1 ; done
IRQBALANCE_ONESHOT=1 IRQBALANCE_BANNED_CPUS=${CoreMask} irqbalance
sleep 1
until [ "`service irqbalance status`" = "irqbalance is stopped" ] ; do sleep 1 ; done
numactl --physcpubind=${Core} --localalloc chrt -f 99 ./your_program