ベンチマークFacebookTwitterLinePocket※インストール部分を更新しました(2017.2.17)はじめまして!ソリューションアーキテクトの藤城(@tafujish)でございます。今回はスポットで1本書かせていただきます。2013年7月号にサーバーベンチマークの入門記事を執筆させていただきました。誌面には書ききれなかったこともいくつかあり、今回はUnixBenchの詳細について書いています。UnixBenchテスト項目の詳細UnixBenchとは、LinuxをはじめUnix系OSでは昔からよく使われている定番のベンチマークツールです。システムのベンチマークという位置づけですが、主にCPUのベンチマークとして利用可能です。サーバーをベンチマークしようとしたとき以下のようにダウンロードし実行します。Codeの終了に伴い、GitHubに移行されていますよく見かける、次のような結果が得られます。Scoreの値で1690.9です。SM61という1995年頃のコンピューターでの値を10として基準にしたときの値です。値が大きければ大きいほど速いということになります。各テスト項目がどんな処理をしているか見ていきましょう。variablesテスト名:dhry2regDhrystoneは整数演算処理の伝統的なベンチマークツールです。一般的なCPUの処理性能を見る場合に使えます。結果は一連の処理が秒間何回処理できたかです。伝統的なベンチマークツールです。HPCのような数値演算の処理性能を見る場合に使えます。Second)で出る、つまり秒間の処理命令数です。Throughputテスト名:execlexecl()というプロセスイメージを置き換えるシステムコールを繰り返すテストです。OSとCPUの処理性能を見る場合に使えます。結果はこのシステムコール処理を何回繰り返せたかです。maxblocksテスト名:fstimeファイルのコピー(ライト→リード)を繰り返すテストで、2MByteのファイルを1024Byteごとに処理します。昨今のコンピューターはこのサイズであれば、メモリやCPU上にキャッシュされるのでディスクの処理性能を測るには不適切で、ほぼCPUの処理性能に依存します(多少メモリの性能も影響します)。結果はKByte/秒です。maxblocksテスト名:fsbufferfstimeと同じテストで、500KByteのファイルを256Byteごとに処理します。maxblocksテスト名:fsdiskfstimeと同じテストで、7.9MByteのファイルを4096Byteごとに処理します。Throughputテスト名:pipe512Byteのデータをパイプ処理しこれを繰り返し実行することでスループットをテストします。昨今のコンピューターであれば512ByteはメモリまでいかずCPU内部で完結するので、OSとCPUの処理性能を見る場合に使えます。結果はこのパイプ処理を何回繰り返せたかです。Switchingテスト名:pipe2つのプロセス間を更新される値をパイプで受け渡すことで、プロセスのコンテキストスイッチ(切り替わり)を実行する。OSとCPUの処理性能を見る場合に使えます。結果はこのパイプ処理を何回繰り返せたかです。Creationテスト名:spawnプロセスのフォークを繰り返すテストです。OSとCPUの処理性能を見る場合に使えます。結果はこのフォーク処理を何回繰り返せたかです。Overheadテスト名:syscallgetpid()というプロセスIDを返す単純なシステムコールを繰り返し実行します。システムコールのオーバーヘッドが少ないほどたくさん実行されるのでOSとCPUの処理性能を見る場合に使えます。結果はこのシステムコールの実行を秒間何回繰り返せたかです。concurrent)テスト名:shell1sort、od、grep、tee、wcコマンドやパイプやリダイレクトを使ったテキスト処理を繰り返します。CPUの処理性能に依存しますが、シェルにも依存する可能性があり、/bin/shを使います。concurrent)テスト名:shell8shell1と同じ処理を8個並行に実行します。以上のとおり、ほぼCPUの処理性能に依存していることがわかります。別のサーバーを比較するときは、OS、コンパイラ、シェルなど環境をできるだけ同じにするとよいでしょう。piなどの組み込みボードをベンチマークするときは、CPU以外のメモリやディスクの性能も効いてくるでしょう。上記のテスト項目は単体でも実行可能です。Dhyrstoneは以下の通り実行します。...で指定し、複数のテストを実行することもできます。Non-Indexテスト上記のテストは、Indexテストと呼ばれ、SparcStationをベースにしたIndexのスコアが出てきます。実行時にはテスト名が省略されていますが、本来は以下のようになります。index上記のテスト以外にも次のようなテストがあり、これらはNon-Indexテストと呼ばれ、ベースになるスコアは出ませんが、テスト単体の結果は得られます。以下のようなテストがあります。concurrent)テスト名:shell16shell1と同じ処理を16個並行に実行します。maxblocksテスト名:fsdisk-rfstimeの操作でリードのみやライトのみといった指定が可能です。Overheadテスト名:sysexecexecl()システムコールを繰り返し実行する。システムコールのオーバーヘッドが少ないほどたくさん実行されるのでOSとCPUの処理性能を見る場合に使えます。結果はこのシステムコールの実行を秒間何回繰り返せたかです。Throughputテスト名:C百数十行程度のCソースファイルのコンパイルを繰り返します。基本的にはCPUの性能に依存しますが、コンパイラの性能や挙動にも影響をうけます。placesテスト名:dcdcコマンドで平方根(ルート)の計算を繰り返します。CPUの処理性能に依存します。Hanoiテスト名:hanoiハノイの塔の計算を繰り返します。CPUの処理性能に依存します。grep)テスト名:grep692KByteのファイルから特定の文字列をgrepコマンドでの処理を繰り返します。今となっては、特別大きなファイルというわけではないので、主にCPUの処理性能に依存します。Arithohテスト名:arithoh何も処理をせずループを回す処理を繰り返しますが、コンパイラや最適化オプションによってはこの処理が省略されるため計測できずエラーとなる場合があります。そのためこのテストは利用できません。(double)テスト名:double四則演算をそれぞれの型の変数を使いこの処理を繰り返します。CPUの処理性能に依存します。これらのテストをまとめたグループもあり、ファイル操作系の「fs」、シェル並行実行の「shell」、数値計算の「arithmetic」、他のものは「misc」にまとめられています。ScoreはWhetstoneのみの値ですので注意してください。467.7グラフィックステストUnixBenchのVersion5.1からは、グラフィックスのベンチマークが追加されています。サーバーではGUI環境は使わないことが多いので普段利用する機会がないかもしれませんが、以下のように使えます。defined」をアンコメントしたあとに、makeする必要があります。実行時は、graphicsと指定します。これで2Dと3Dのベンチマークが実施されます。結果はこのように出ます。158.02Dテスト名:2d-rects、2d-lines、2d-circle、2d-ellipse、2d-shapes、2d-aashapes、2d-polys、2d-text、2d-blit、2d-window10種類のテストを実施します。実際にはx11perfコマンドを実行しています。3Dテスト名:ubgearsOpenGLを使ったテストを実施します。glxgearsコマンドをUnixBenchにポートしたものを実行しています。いずれのテストも基本的なグラフィックス処理となります。確認していないですが、3Dの方は動きが怪しいので参考程度にするのがよろしいかと。並列(マルチCPU)テストUnixBenchのVersion5.1からは、マルチCPUつまり並列実行によるベンチマークに対応しています。並列テストでは、各テストの同じものを実行します。そのため、ほとんどは独立性が高いテストとなるので、CPUコア分の性能向上が見込めます。一方で、性能が向上しないテストもあります。一つが、ファイル操作のテストです。これは複数のテストで同じファイルを操作するために、並列性が活かせません。一つが、シェルのテストです。shell8の場合、元々8個同時に実行しているため、2並列で実行すると16個の処理が走ることになりコア数に応じて性能が向上するわけではありません。UnixBenchをデフォルトで実行すると、最初に1並列、次に論理コア数分の並列数で実行します。この並列数は-cオプションで指定可能で、例えば4並列の場合は以下のようになります。NUMBER並列実行する数を指定します。NUMBER各テストを何回繰り返すか指定します。デフォルトだと、実行時間が短いテストは10回、長いテストは3回繰り返し実行します。複数回実行したときは、実行回数に応じて悪い結果から順に切り捨てられます。-v各テストの実行結果など詳細を表示します。-q各テストの実行結果など詳細を表示します。まとめUnixBenchには大きく分けて3つのテストがあります。Index、Non-Index、Graphicsです。一般的なサーバーにてベンチマークする場合は、デフォルトのIndexのみで十分でしょう。各テストのほとんどがCPUの処理性能に依存します。古いサーバーなど環境によってはCPU以外にメモリやディスクの処理性能に影響をうける場合もありますので注意しましょう。今回の評判がよければいくつかの環境で実行した結果を比較考察してみたいと思います。VR体験セミナーモノビットによるリアルタイム通信エンジン新製品「MRS」と「MU...2017-02-02IDCFクラウドでのマルチキューネットワーク仮想環境や古いサーバーだと上記画像のように、CPU使用率が特定...2016-11-25AerospikeをIDCFクラウドで動かすとこんなに良い件こんにちは、エバンジェリストの藤城(@tafujish)です。Inc.▲はてなブログをはじめよう!blog-idcfさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。