GNU/Linux >> Linux の 問題 >  >> Linux

Linux でプロセスを 1 つの CPU コアに制限する方法は?

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 後でこれらに (実行中の) プロセスを割り当てることができます。


Linux
  1. Linuxでゾンビプロセスを強制終了する方法

  2. Linuxにvtopをインストールする方法

  3. Linux –Linuxでプロセスを1つのCPUコアに制限する方法は??

  1. Linux – Linuxでプロセスのプロセッサ親和性を設定するにはどうすればよいですか?

  2. Linuxで$Path変数を設定する方法

  3. Linux でプロセスのプロセッサ アフィニティを設定するにはどうすればよいですか?

  1. CentOS/RHEL 7 で SYSTEMD プロセスの CPU アフィニティを設定する方法

  2. Linux で C または C++ からプロセスの CPU アフィニティを設定する方法は?

  3. Linux でのバックグラウンド プロセス