Di Linux, jalankan sched_setaffinity
panggilan sistem. Afinitas suatu proses adalah sekumpulan prosesor yang dapat menjalankannya. Ada pembungkus shell standar:taskset
. Misalnya, untuk menyematkan proses ke CPU #0 (Anda harus memilih CPU tertentu):
taskset -c 0 mycommand --option # start a command with the given affinity
taskset -c -pa 0 1234 # set the affinity of a running process
Ada modul pihak ketiga untuk kedua Perl (Sys::CpuAffinity
) dan Python (affinity
) untuk mengatur afinitas proses. Keduanya bekerja di Linux dan Windows (Windows mungkin memerlukan modul pihak ketiga lainnya dengan Sys::CpuAffinity
); Sys::CpuAffinity
juga berfungsi pada beberapa varian unix lainnya.
Jika Anda ingin menyetel afinitas proses sejak kelahirannya, setel afinitas proses saat ini segera sebelum memanggil execve
. Inilah pembungkus sepele yang memaksa proses untuk dieksekusi pada CPU 0.
#!/usr/bin/env perl
use POSIX;
use Sys::CPUAffinity;
Sys::CpuAffinity::setAffinity(getpid(), [0]);
exec $ARGV[0] @ARGV
Anda juga dapat membangun cpu-set di baris perintah. man cpuset
Nanti Anda dapat menetapkan (menjalankan) proses untuk ini.