プロセスが実行されている特定のプロセッサーの判別


10

Linuxクラスターの8コアノードにアクセスできます。ノードにログインすると、次のコマンドを使用してプロセッサのリストを表示できます。

more /proc/cpuinfo

私の8コアノードでは、プロセッサの番号は0〜7です。各プロセッサはIntel Xeon CPU(E5430 @ 2.66GHz)です。

次にfoo、いくつかの引数を指定してプログラムを呼び出すとしますargs

foo args

プログラムのfoo実行に時間がかかります(たとえば、数時間または数日)。を呼び出したfoo後、実行中の特定のプロセッサ(0〜7)を特定することは可能fooですか?topプログラムショーくれプロセスIDと同様の情報が、私は、プロセッサ表示されていない番号を。そのような情報はありますか?


1
特定のことを行わない限り、プロセスは常に同じCPUに留まることはありません。なぜその情報が必要なのですか?
マット

@マットお時間をいただき、ありがとうございます。これは別の質問ですが、最終的には、2つのコールfooを2つの異なるプロセッサに割り当てることができるかどうかを確認したいと思います。foo1回呼び出すと、%CPU100%に非常に近い値で実行されtopます(による)。私が呼び出すときにはfoo第二の時間を、両方のfooプロセスは、その実行%CPUのために両方のプロセス合計を 100%未満(それぞれ通常約45%までfooの処理)。私には、これは、2つの呼び出しfoo同じプロセッサ上で実行されていることを示唆しています(使用可能なプロセッサが8つある場合でも)。これが事実であることを確認したいと思います。
Andrew


1
スケジューラを使用すると、複数の(異なる)プロセッサで実行することができます。誰がアプリケーションをプログラムするかに応じて、Javaプログラムはこれを試みます。
mdpc 2013年

回答:


11

pspsr列を要求した場合(または-Fそれを含むフラグを使用した場合)は、その情報を提供できます。

例:

$ ps -F $$
UID        PID  PPID  C    SZ   RSS PSR STIME TTY      STAT   TIME CMD
me        6415  6413  0  5210  2624   2 18:52 pts/0    SN     0:00 -su

または:

$ ps -o pid,psr,comm -p $$
  PID PSR COMMAND
 6415   0 bash

私のシェルは、最初のコマンドを実行したときにCPU 2で実行され、2番目のコマンドを実行したときにCPU 0で実行されていました。プロセスがCPUを非常に迅速に変更する可能性があるため、実際に表示される情報は基本的にすでに古くなっていることに注意してください。

このスーパーユーザーの質問の回答の詳細:

Linux:プロセスがロードされているプロセッサ番号を知るコマンド?


4

以下とtopからprocps、中(Linuxディストリビューション、今日の一般的デフォルト)top、プレスfに、ナビゲートP = Last User CPU (SMP)とプレスSpace(あなたも前に、インスタンスのフィールドを移動することができます選択するCOMMANDと、フィールドRightのキーとその後、上下に動きます)。qメイン画面に戻ります(プロセスがプロセッサ間で移動することが明示的に構成されていない限り、プロセスがプロセッサ間で移動することがわかります)。を押しWて、それをデフォルトとして保存できます。

?ヘルプを押してください。


4

コマンドtasksetはあなたが探しているものです:

taskset-プロセスのCPUアフィニティを取得または設定します

$ taskset -p 12345
pid 12345's current affinity mask: f

のマスクは、fすべてのプロセッサを意味し、0x00000001プロセッサ0のみになります。

$ taskset -c -p 24389 
pid 24389's current affinity list: 0-3

CPUをリスト形式で表示します。この例では、ラップトップに4つのコアがあります。

詳細はmanページをご覧ください


1

この情報はから直接取得することもでき/proc/[pid]/statます。これは39番目のスペース区切りフィールドです(Linux 2.2.8以降)。

たとえば、現在のシェルが(このインスタンスで)実行されているCPUプロセッサを表示します。

cat  /proc/$$/stat | cut -d' ' -f39
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.