動作周波数はXeonプロセッサで3.06GHz,Xeon プロセッサ MPで2.0GHzとなっており,さらに,Xeonプロセッサ MPからは2Mバイトの内蔵3次キャッシュ・メモリーが搭載されるなど,技術革新が著しい。そのため,一般的にはCPUがボトルネックになる以前に,他のコンポーネントが限界に達してしまうケースがほとんどである。

 しかし,トランザクション処理が頻繁に発生する以下のような用途では,CPUがボトルネックになる可能性がある。

● 統合業務システム(ERPなど)

● データ解析(データマイニング,データ・ウエアハウスなど)

● 暗号化処理(SSLなど)

● 高速演算系(並列クラスタ・システムなど)

 こうした用途に用いる場合は,搭載するCPU数やそのキャッシュ容量に十分な注意を払う必要がある。そこで,CPUの詳細情報や負荷状況を調べ,その結果に応じて適切なCPU数やキャッシュ容量を割り出す方法を紹介する。

CPUの詳細情報や負荷状況を調べる

図1●/proc/cpuinfoファイルの内容
図1●/proc/cpuinfoファイルの内容
[画像のクリックで拡大表示]

 CPUの詳細情報や負荷状況を調べるには,次のようにすればよい。

(1)/proc/cpuinfo

 モデル名,周波数,キャッシュ容量など,CPU自身の詳細情報を参照できる。例えば,2.80GHz動作のXeonプロセッサを2基搭載したサーバーの場合,図1のような情報が取得できる。この例では,CPUだけでなくカーネルもHyper-Threadingに対応したバージョンを使用したため,CPU数2個に対して,Linuxからはその倍の4個に見えている。

(2)vmstat

 元々は仮想メモリーの統計情報を取得するためコマンドだが,CPU関連の統計情報も取得できる(図2)。CPUの負荷状況は以下に示した個所を見るとよい。


図2●vmstatの実行結果
図2●vmstatの実行結果
「vmstat 間隔(秒) 回数」で一定間隔,一定回数の情報を取得できる。
[画像のクリックで拡大表示]

●system

in:一秒当たりの割り込み回数(クロック割り込みも含む)

cs:一秒当たりのコンテキスト・スイッチ回数

●cpu:CPUの総時間に対する割合(%)

us:ユーザー時間

sy:システム時間

id:アイドル時間

 コンテキスト・スイッチとは,あるプログラム(プロセスやスレッド)から別のプログラムにCPUの処理を切り替えることである。同時に複数のプログラムを実行している場合,CPUはこれらを短時間で切り替えながら処理を進めている。切り替え処理によってオーバーヘッドが発生するので,コンテキスト・スイッチを最小限に抑えることが望まれる。

(3)mpstat

 SMP(対称型マルチプロセッサ)構成の場合は,mpstatを使えばCPUごとの統計情報を取得可能だ(図3)。取得した情報の見方は表1の通り。

# mpstat -P ALL
Linux 2.4.9-e.3smp (linux.test.domain)  02/03/03

15:43:49  CPU  %user  %nice  %system  %idle  intr/s
15:43:54  all   9.78   0.00    36.28  53.94  230.34
15:43:54    0  11.38   0.00    32.53  56.09  230.34
15:43:54    1   2.20   0.00    25.95  71.86  230.34
15:43:54    2  11.98   0.00    42.71  45.31  230.34
15:43:54    3  13.57   0.00    43.91  42.51  230.34

図3●mpstatの実行結果
「mpstat -P ALL 間隔 回数」で一定間隔,一定回数の情報を取得できる。

表1●mpstatの表示内容
[画像のクリックで拡大表示]
表1●mpstatの表示内容