CPU性能を見る 〜 そのままでは使えないDhrystone

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 *⁄

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30