Linux では、sched_setaffinity
を実行します。 システムコール。プロセスのアフィニティは、プロセスを実行できるプロセッサのセットです。標準のシェル ラッパーがあります:taskset
.たとえば、プロセスを CPU #0 に固定するには (特定の CPU を選択する必要があります):
taskset -c 0 mycommand --option # start a command with the given affinity
taskset -c -pa 0 1234 # set the affinity of a running process
両方の Perl (Sys::CpuAffinity
) と Python (affinity
) プロセスのアフィニティを設定します。これらはどちらも Linux と Windows の両方で動作します (Windows では、Sys::CpuAffinity
を使用した他のサードパーティ モジュールが必要になる場合があります)。 ); Sys::CpuAffinity
他のいくつかの UNIX バリアントでも動作します。
プロセスの誕生時からアフィニティを設定したい場合は、execve
を呼び出す直前に現在のプロセスのアフィニティを設定します。 .プロセスを強制的に CPU 0 で実行する簡単なラッパーを次に示します。
#!/usr/bin/env perl
use POSIX;
use Sys::CPUAffinity;
Sys::CpuAffinity::setAffinity(getpid(), [0]);
exec $ARGV[0] @ARGV
コマンドラインでも cpu-sets を構築できます。 man cpuset
後でこれらに (実行中の) プロセスを割り当てることができます。