Linuxサーバで32ビットCPUと64ビットCPUを見分ける方法
最近のサーバはほとんどが64ビットCPUだと思いますが、ちょっと前の過渡期のサーバのCPUは32ビットなのか64ビットなのかわからないことがあります。インテルのプロセッサにはブランド名が同じなのに64ビットなのとそうでないのがあるようですし(例えばXeonとか)、クロック数を頼りにメーカーのサイトを調べてみても古いCPUがクロック数が高かったりして、どちらなのかいまいち確信を持てません。
Linuxがインストールされているなら、サーバにログインして/proc/cpuinfoを見れば、CPUが64ビットかどうかわかります。
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz stepping : 6 cpu MHz : 2000.000 cache size : 4096 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 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 sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm bogomips : 4008.51
flagsにlmがあれば64ビットCPUです。ただし、この情報から分かるのはCPUが64ビット対応しているということであって、64ビットカーネルで動いているということではありません。Linuxカーネルがx86とx86-64どちらで動作しているのかを調べるには、/proc/versionもしくはunameなどを見ればいいと思います。
$ uname -a Linux s270 2.6.17.13-smp #1 SMP Tue Sep 19 05:49:09 JST 2006 i686 GNU/Linux
この場合は32ビットのカーネルが動作しています。
話はちょっと変わって、今時のデスクトップのCPUにはCore2 Duoが採用されています。WindowsXPがバンドルされていると、x64 Editionでない32ビット版が普通にプリインストールされていたりします。この32ビット WindowsXPでVMwareを動かすとして、ゲストに64ビットのLinuxを動作させることができるのでしょうか。
どうしてこんな疑問が出てきたかというと、最近仕事で64ビット環境でコンパイルしなきゃならない状況になったからです。開発環境を探しているときに、そういえば自分のマシンはCore2 Duoだったな、と気づきました。それまではVMwareのゲストに何の疑いもなくx86のCentOSをインストールしていました。
とりあえず、そのCentOSから/proc/cpuinfoを見てみました。
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 nx constant_tsc pni ds_cpl
こんな感じでlmがありません。すべてのCore2 DuoがIntel64に対応しているはずなのにおかしいです。VMware環境だとだめなのでしょうか。
いろいろ調べてみると、僕のDellのデスクトップでは初期設定でVTの設定がdisableになっていたようなので、BIOSのCPU Securityというところからenableに設定を変更してみました。そうしたら、今までx86のCentOSで見えていた/proc/cpuinfoにlmフラグがたちあがりました。VTとはVirtualization Technologyの略で、VMwareやXenのゲストでオーバーヘッドが小さくなる技術です。
ゲストOSの特権命令云々、というところが32ビットのホストのVM上で64 ビットOSが動く理由のような気がしますが、勉強不足でよくわかりません。
心なしかゲストの動作が早くなった気がします。VMwareを開発環境に使っている人は、VTが有効になっているか 調べてみるといいと思います。



