読者です 読者をやめる 読者になる 読者になる

肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

VMWare PlayerでCPUを2つ以上使う(デュアルコア・クアッドコア)

VMWare


VMWareで、普通に(何をもって普通と言うかはしらないけど)vmx作ってゲストOSを起動すると、ホストにデュアルコアを積んでようがクアッドコアを積んでいようが、VMWareのゲストOS上で使えるCPU数は1つだけになってしまします。

これは、

% cat /proc/cpuinfo

を見るとわかります。processor 0 しか認識されてないと思います。

ゲストOS上でデュアルコア使えるようにする


これには、vmxに記述を追加します。

numvcpus = "2"

確かめる

$ cat /proc/cpuinfo 
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
stepping        : 8
cpu MHz         : 2402.709
cache size      : 4096 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss nx lm constant_tsc pni ds_cpl cx16 lahf_lm
bogomips        : 4808.38

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
stepping        : 8
cpu MHz         : 2402.709
cache size      : 4096 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss nx lm constant_tsc pni ds_cpl cx16 lahf_lm
bogomips        : 4808.41


これで、cpuを二つ使えるようになりました。

さらに確認

% php -r 'while(1) echo 1;' >/dev/null

これを2つ以上実行します。(バックグラウンドで実行してもいいし、sshで複数ログインして実行してもヨシ)


で、実行中のホストOSのCPU使用率。(タスクマネージャのスクリーンショットです)

上にあるバカ高いメモリ使用率のプロセスは、メイン開発につかっているCentOS。(メモリ768M割り当ててるのでアホ使用率。) その下の、ハイライトされてるやつが、今回実験用に起動した実験CentOS。ちゃんとCPU使用率が50%になってると思います。(私のホストマシンはクアッドコアなのでこれで正しいのです。)

結論:CPU数の変更は numvcpu

これでゲストOSでも惜しみなくリソースを使うことができるようになりますね!!

実験してないけど多分numvcpu = "4" とかやればクアッドコアのリソースも激しく使えるようになります。ていうかホストで積んでるCPU数以上に設定するとどうなるんだろう?やってないけどというかあんまやりたくないので誰かやったら報告ください。(ぉ

余談ですが、PHPは基本的にシングルスレッドなので(大笑い)、PHP上で激しいことやってもどうせ1コアしか使えません。*1

*1:PHP爆発しろ!!