回答:
CPUあたりのCPU コアの数を取得するには:
grep "^core id" /proc/cpuinfo | sort -u | wc -l
または、物理 CPUの数を取得するには:
grep "^physical id" /proc/cpuinfo | sort -u | wc -l
それが役立つかどうかはわかりませんが、mpstat
ユーティリティを使用して、個々のプロセッサ(またはコア)ごとのCPU使用率の内訳を取得できます。例えば:
$ mpstat -P ALL 1
12:49:59 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
12:50:00 PM all 7.89 0.00 1.25 0.88 0.00 0.00 0.00 89.97 1359.00
12:50:00 PM 0 14.00 0.00 0.00 0.00 0.00 0.00 0.00 86.00 1043.00
12:50:00 PM 1 15.84 0.00 7.92 3.96 0.00 0.99 0.00 71.29 297.00
12:50:00 PM 2 3.96 0.00 0.00 1.98 0.00 0.99 0.00 93.07 0.00
12:50:00 PM 3 3.96 0.00 0.99 2.97 0.00 0.00 0.00 92.08 0.00
12:50:00 PM 4 4.00 0.00 0.00 0.00 0.00 0.00 0.00 96.00 0.00
12:50:00 PM 5 4.95 0.00 0.99 0.00 0.00 0.00 0.00 94.06 18.00
12:50:00 PM 6 10.89 0.00 0.99 0.00 0.00 0.00 0.00 88.12 0.00
12:50:00 PM 7 5.05 0.00 0.00 0.00 0.00 0.00 0.00 94.95 0.00
この例では、そのCPUのを見ることができる0
、1
と、6
それらの残りの部分よりも多くの作業を行っています。1つのCPUが100%に近い(または100%にある)一方で、他のCPUがゼロになっていることがあります。これは、シングルスレッドであり、一度に1つのCPUしか使用できないプログラム(またはプログラムの一部)のインジケータになります。
mpstat
Fedora、RHEL、またはCentOSシステムにインストールするには、を使用しますyum install sysstat
。
# aptitude search mpstat #
。
aptitude search systat
代わりに@AlixAxelを試してください。
明示的に設定しない(つまり、プロセスを特定のCPUに固定する)場合を除き、すべてのコアが常に使用されていると見なすことができます。スケジューラは、次に利用可能なコアをプロセスに割り当てます。適切な例として、「システムモニター」(GNOMEの一部)は、マシンの4つのコアすべてで負荷がほぼ同じであることを示しています。
そのため、コアがどのように使用されているかを示す応答がここに表示されます。
ただし、これは実際にサービスを提供しているわけではありません。あなたは基本的には成り立たないという仮定をしました-あなたの仕事はコアのいくつかのサブセットにグループ化する傾向があるということです。
代わりに、何らかの形で「ペンイン」状態を維持する何かを実装しない限り、ジョブはすべてのコアに分散されます。(注:私はそれをお勧めしていません。ただ「言うまでもなく」と言います)
代替戦略は次のとおりです。他のユーザーがジョブを追加することを「許容できる」と感じたときに、特定のシステムのLOADレベルを特定します。次に、負荷レベルがその制限を下回ったときにのみ新しいバックグラウンドジョブを送信するものを作成します。
そうすれば、ソリューションはコア数に依存せず、よりポータブルで、より柔軟になり、「微調整」も簡単になります。
実行しtop
、「U
」を押してユーザー名を指定し、上位のいくつかのプロセスのCPU使用率を合計することにより、大まかな見積もりを取得できます。
top
は、-bスイッチを使用してバッチモードで実行できます。-nスイッチと組み合わせて、必要な反復回数を取得します。
top
出力を解析してこのようなスクリプトを作成するか、Googleが誰かが既にそれを行ったかどうかを確認する必要があります。ただし、コンテキストの切り替えが発生する速度を考えると、実行ごとに異なる出力が得られると思うので、努力する価値があるとは思いません。システムの負荷は十分な指標ではありませんか?プロセスキュー(CPUで待機しているプロセス)の処理に必要な仮想コアの数を効果的に示します。