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

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

この質問にはすでに回答があります :Linuxでプロセスのプロセッサ親和性を設定するにはどうすればよいですか?

(4つの回答)
3年前に閉鎖されました。

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

ulimitに似たもの またはcpulimit いいだろう。 (念のため:使用率や実行時間を制限したくない。アプリ(すべての子、プロセス(スレッド)を含む)に1つのCPUコア(または「n」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を呼び出す直前に現在のプロセスのアフィニティを設定します。 。これは、プロセスをCPU0で強制的に実行する簡単なラッパーです。

#!/usr/bin/env perl
use POSIX;
use Sys::CPUAffinity;
Sys::CpuAffinity::setAffinity(getpid(), [0]);
exec $ARGV[0] @ARGV

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

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

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

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

  2. CからLinuxでPIDによってプロセスのCPU使用率を計算する方法は?

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

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

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

  3. Linuxで1つのプロセスのすべてのスレッド(および子)を解放する方法は?