>>前回

 CPUコア数を変えながらデータベース処理の性能を調べた。RHEL6に搭載されたMySQL 5.1.47(エンジンはMyISAM)を用い、10万件のレコードを格納したテーブルへのSELECT処理と、空テーブルへのINSERT処理を行った。設定パラメーターは、付属のmy-large.cnfのものを利用した。

 その結果が図1で、オレンジの線で示すのはKVMの「ゲスト環境」で測定した値。グリーンの線で示すのは、KVMの「ホスト環境」で測定した値だ。オレンジとグリーンの差がKVMのオーバーヘッドといえる。

 ホスト環境は、KVMを使わず、物理サーバー上にRHEL6を直接インストールした場合に相当する。ホスト環境では、仮想環境を作り出すためのエミュレーター(qemu-kvm)やKVM(カーネルモジュール)を介すことなく、アプリケーションが直接動作するからである。なお、ホスト環境は通常、ゲスト環境の管理にのみ使用し、アプリケーションは動作させない。今回の検証では、物理サーバー相当の性能を見るために、あえてホスト環境でもアプリケーション(MySQL)を動かした。

 SELECT処理のオーバーヘッドは最小で35.7%、最大で53.9%だった。同じくINSERT処理では最小で25.9%、最大で58.3%。INSERT処理では利用CPUコア数を16にまで増やすと、特にホスト環境で顕著な性能劣化が生じた。これは恐らく、MySQLが多数のCPUコアを効率よく利用できるようには実装されていないからだろう。1~8コアまでの結果で見ると、KVMのオーバーヘッド(ホスト性能とゲスト性能の差をホスト性能で割って算出)は、40~60%といったところである。