TOPサーバ構築・運用> CPU性能を見る 〜 そのままでは使えないDhrystone




Xenパフォーマンステスト
Xenのパフォーマンステスト 〜どこまで性能がでるの?

第1回:CPUのパフォーマンスチェック
著者:宮本 久仁男   2006/9/27
前のページ  1  2   3  次のページ
CPU性能を見る 〜 そのままでは使えないDhrystone

   Xen自体は高性能な実装といわれますが、どの程度の性能がでるものなのでしょうか。筆者自身はベンチマークマニアというわけではないのですが、まずはCPU性能を見るということで、昔から使われているDhrystone 2.1を使ってみましょう。

   ベンチマークソフトには、以下のURLから取得できるDhrystoneベンチマークプログラムを用いました。

   なおこのプログラムを使うためには、システムにコンパイラがインストールされている必要があります。


Dhrystoneプログラムを展開 〜 コンパイルする

   ZIPファイルを展開すると、dhrys.1/dhrys2/dhrys3/dhrys4という4つのファイルが作成されます。これらのファイルは、shar(シェルアーカイバ)と呼ばれるしくみでまとめられているため、dhrys.1から順序よく「シェルスクリプト」として実行する必要があります。

   具体的には、以下のような感じで実行することで、コンパイルからベンチマーク実行が可能な環境が作成されます。

Dhrystoneの展開(sharファイルを展開する)
juno:/home/wakatono/tmp/dhrys# sh dhrys.1
shar: Extracting "Makefile" (1009 characters)
shar: Extracting "dhrystone.c" (27341 characters)
shar: End of shell archive.
juno:/home/wakatono/tmp/dhrys# sh dhrys.2
shar: Will not over-write existing file "Makefile"
shar: Extracting "RATIONALE" (18793 characters)
shar: Extracting "README" (2308 characters)
shar: Extracting "README.RER" (4419 characters)
shar: Extracting "clarify.doc" (3195 characters)
shar: Extracting "pure2_1.dif" (3590 characters)
shar: Extracting "submit.frm" (170 characters)
shar: End of shell archive.
juno:/home/wakatono/tmp/dhrys# sh dhrys.3
shar: extracting 'dhry.h' (18533 characters)
shar: extracting 'dhry.p' (37108 characters)
juno:/home/wakatono/tmp/dhrys# sh dhrys.4
shar: extracting 'dhry_1.c' (11857 characters)
shar: extracting 'dhry_2.c' (5273 characters)
shar: extracting 'dhry_c.dif' (4354 characters)

   あとはmakeコマンドを実行することで、dhrystoneの結果が得られます。ただ、このソースコードをそのまま使うと、以下のような結果がでてしまい、何の役にも立ちません。

Running dhrystone (Level 1 optimization, without registers)
./dhrystone
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second
./dhrystone
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 2500000 dhrystones/second
./dhrystone
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second

Running dhrystone (Level 1 optimization, with registers)
./dhrystoneR
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second
./dhrystoneR
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 2500000 dhrystones/second
./dhrystoneR
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second

Running dhrystone (Level 2 optimization, without registers)
./dhrystoneO
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second
./dhrystoneO
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second
./dhrystoneO
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second

Running dhrystone (Level 2 optimization, with registers)
./dhrystoneRO
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second
./dhrystoneRO
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second
./dhrystoneRO
Dhrystone(1.1) time for 50000 passes = 0
This machine benchmarks at 5000000 dhrystones/second

   これは、Dhrystoneで定義された処理を50,000回実行するのにどの程度の時間がかかった、というのを表現しているのですが、1秒未満(Dhrystone 1.1を50,000回実行するのにかかった時間は0秒となっている)で実行されてしまっており、ベンチマークとして有意とはいいがたい結果となっています。


Dhrystone 2.1を修正する 〜 ループ回数を1,000万回に

   先のような結果では検証とは言い難く、Dhrystoneの処理回数を変更し、実行しなおす必要があります。まずは、200倍ほどして1,000万回のループを実行するようにdhrystone.cを修正しました。具体的には、dhrystone.cの387行目に以下のような記述があるので、この行の「50000」を「10000000」に変更しましょう。

#define LOOPS   50000    ⁄* Use this for slow or 16 bit machines *⁄

前のページ  1  2   3  次のページ


宮本 久仁男
著者プロフィール
宮本 久仁男
某大手SIerに勤務。OSおよびミドルウェア、アプリケーション開発、インターネットサーバの運用管理、社内技術支援などを経て、現在は動向調査業務に従事する。業務の傍ら、大学にも所属(博士後期課程)し、研究生活を送る。あらゆる分野に興味を持ち、それらについて自学自習で学びつつ、成果をコミュニティにフィードバックしたり、研究/検証テーマを模索したりという日々。Microsoft MVP (Windows - Security)というアワードも受賞しているものの、どこにでもいそうなエンジニア風。


INDEX
第1回:CPUのパフォーマンスチェック
  Xenのパフォーマンスはどうなの?
CPU性能を見る 〜 そのままでは使えないDhrystone
  変更したDhrystoneベンチマークを1つのドメインUで動作させてみよう