はじめに
第1回はCPU、第2回はI/O周りの性能について検証を行いました。今回は、CPUとI/O周りに加え、メモリアクセスを組み合わせた総合的なパフォーマンスを見てみましょう。具体的には、同じプログラムをコンパイルさせ、その時間の差異を測ります。
第2回では同期I/Oを発生させましたが、これはI/O装置の最適構成を検討するための仕込みであり、実際の利用を行うにあたって同期I/Oを行う ことは(信頼性はともかくとして)性能の面で不利になります。そこで、第3回は非同期I/Oにこの部分を戻してみます。
環境の作り方
今回の検証には、Xenそのもののをコンパイルする環境が必要になります。インストールについての解説は割愛しますが、最低限コンパイラが必要です。
みなさんの環境でチェックされる場合には、コンパイラまでインストールされているかどうかを確認の上実施してみてください。
ドメイン0におけるXenそのもののコンパイル性能を見る
今回の執筆時にちょうどXen 3.0.3がリリースされたこともあり、このプログラムをコンパイルしてみます。
まずはネットワークI/Oが発生しないように、次のようにLinuxカーネルソースをローカルにコピーします。
$ gzip -dc xen-3.0.3_src.tgz | tar xvf
$ cd xen-3.0.3_src
$ (カーネルソースを取得)
$ date >> ../compiletime;make;date >> ../compiletime
このようにしてファイルcompiletimeに記録された時刻から、処理にかかった時間を算出します。コンパイルという作業の特性を考えると、表 1にあげる処理の連続になります。もっとも時間がかかるのはファイルI/Oと考えられますが、ファイルI/Oの性能は、非同期I/Oで実施すると実I/O が発生するタイミングに差異がでてきます。
- ファイル読み込み
- メモリ読み書きおよび演算
- ファイル書き込み
先のコンパイルした時刻を記録したファイルcompiletimeは次のようになっています。これより、ドメイン0のXen 3.0.3のコンパイルには59分9秒かかったことがわかります。
2006年 10月 25日 水曜日 03:10:44 JST
2006年 10月 25日 水曜日 04:09:53 JST