web-dev-qa-db-ja.com

WindowsとLinuxの両方で物理CPUの数を決定する方法

実行時cat /proc/cpuinfo Linuxでは、さまざまな情報がキックバックされます。例えば:

> cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 15
model name  : Intel(R) Xeon(R) CPU            5130  @ 2.00GHz
stepping    : 6
cpu MHz     : 1995.069
cache size  : 4096 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 10
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx tm2 cx16 xtpr lahf_lm
bogomips    : 3991.76
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 15
model name  : Intel(R) Xeon(R) CPU            5130  @ 2.00GHz
stepping    : 6
cpu MHz     : 1995.069
cache size  : 4096 KB
physical id : 3
siblings    : 2
core id     : 0
cpu cores   : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 10
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx tm2 cx16 xtpr lahf_lm
bogomips    : 3989.46
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

まず、そのすべて実際にははどういう意味ですか?プロセッサ0とプロセッサ1があるようです。これは、LinuxがCPUのcoresの両方を報告していることを意味しますか、それともVMであるため、私がhappen今すぐ持っている(物理的に異なるCPUを使用している場合でも)?

次に、Windowsのコマンドラインから同様の情報ダンプを取得するにはどうすればよいですか?

第三に、どちらかのプラットフォームを使用して、物理 CPUの数と合計 CPUコアの数を決定する方法はありますか?

5
warren

最初の質問に答えるには: http://www.richweb.com/cpu_info は、記事に続くいくつかの興味深い議論とともに、すべてのcpuinfo出力を詳細に説明しています。

あなたの場合、あなたのVMは、OSに2つの物理コアVMとして表示されるように構成されていると報告しています。VMの下のベアメタルは1コアまたは100コアですが、VMのOSに関する限り、2つの物理プロセッサを搭載したマシンで遊ぶことができます。スレッドがどのようになっているのかはわかりません。これらのプロセッサへの割り当ては、実際にはVMの下の物理ハードウェアで実行されています。

Windows CMDシェルから多少類似した情報を取得するには、CMDシェルからsysteminfoコマンドを試すことができます。 Linuxの/proc/cpuinfoのものよりもはるかに多く表示されますが、実際のプロセッサ自体についてはそれほど詳細ではありません。

3番目の質問に対する答えがわかりません。ごめんなさい。

7
Ian C.

3番目の質問について:

cpuinfoには、「物理ID」フィールドがあり、物理CPUごとに一意です。同じCPUのコアは、同じ物理IDを持つ異なるプロセッサとして報告されますが、物理的に離れたプロセッサは異なる物理IDを持ちます。

VMを使用している場合、実際のハードウェア(CPUなど)については何もわからないことに注意してください。知っているのは、VMが示すことだけです。たとえば、物理マシンには1つのクアッドコアCPUがあり、VMは2つのシングルコアCPUを報告するように構成されています。cpuinfoに2つのシングルコアCPU(つまり、異なる物理IDを持つ2つのプロセッサ)が表示されます。

7
AmirW

一発ギャグ:

dmidecode | grep CPU | grep -i 'socket designation' | wc -l

このコマンドは、dmidecodeによって提供される広範な情報を解析して、各物理CPUに割り当てられた一意の「ソケット指定」値に基づいて物理プロセッサーの数を判別します。これを使用して、特定のホスト上の多数の物理CPUを取得できます。/proc/cpuinfoをcatしようとしても常にうまくいくとは限りません。 2x6C2.4GHzサーバーを搭載したPowerEdgeR420では、cpuinfoが誤って1つのプロセッサを報告しました。

1
Gregory Patmore