KVM上のVirtIOを使うWindowsでディスクアクセス速度を測定してみた
前回に引き続きKVMの準仮想ドライバVirtIOを使って、KVM上のWindowsでディスクアクセス速度を測定しました。 比較対象としては網羅性は無いですが、KVM上でVirtIOを使わずデフォルトのドライバを使った場合と、VirtualBox上のWindowsと、ローカルのUbuntuとで速度を測定して比較しました。
環境
ホスト環境
ハードウェア
- CPU
- RAM
- DDR3 1067MHz 4GB x 2
- HDD
- Hitachi HTS547550A9E384 500GB 5400RPM
ソフトウェア
- ホストOS
- Ubuntu 14.04 64bit
- カーネル
- 3.13.0-27-generic
- ハイパーバイザ
- qemu-kvm 2.0.0
- VirtualBox 4.3.10 + Guest Additions 4.3.10
- 測定ソフト
- CrystalDiskMark 3.0.3 x64 (ゲスト)
- fio 2.1.3 + fioでCrystalDiskMarkと同様の測定を実現するシナリオファイル (ローカル)
ゲスト環境
共通
- 割り当てCPUコア数
- 2
- 割り当てメモリサイズ
- 4096MB
- 割り当てストレージサイズ
- 96GB
- ゲストOS
- Windows 7 Professional SP1 64bit
比較対象
- VBox-dynamic
- VirtualBox上で、ストレージは動的割り当て
- AHCIタイプのストレージコントローラを使用 (デフォルト仕様)
- ホストI/Oキャッシュは使用しない (デフォルト仕様)
- VBox-fixed
- VirtualBox上で、ストレージは固定割り当て
- それ以外はVBox-dynamicと同じ
- KVM-IDE
- KVM-VirtIO
- Local
- ホストのローカルで測定
測定結果
KVM-VirtIOの値が非常に大きくなったので、他の値を見やすくするためKVM-VirtIOがグラフの右端で見切れるようにしてます。
考察
まずKVM-IDEもKVM-VirtIOも明らかにおかしい大きな値が出ています。ローカルとゲストとで測定方法が厳密には同じではないので正確な比較ではないですが、ローカルよりもKVM-IDEやKVM-VirtIOの方が大きな値を取るのは普通考えられないことです。 あまり確証はないですが、考えられる理由は2点あります。
一方VirtualBoxでの値はローカルの値とほぼ同等で、個人的見解としては仮想化した時のディスクアクセスのオーバーヘッドは実用上無視できると思います。
今回の測定は、デスクトップやノートPCでホストOSのWindowsを使うときにハイパーバイザとしてKVMを使うかどうかの調査も兼ねてたのですが、VirtualBoxのディスクアクセスは遅いのではないかという疑念は晴れて、VirtualBoxの使用をやめる消極的な理由はなくなりました。
KVMを使ってみた感想
- ゲストの解像度をウィンドウサイズに合わせて変更できなかった (やり方を知らないだけかも)
- ホストでは
xmodmap
を使ってCapsLockを左Ctrlに変更していたのに、ゲストには反映されなかった
ディスクアクセス速度よりも使いにくさが目立ったので、KVMでWindowsを仮想化するのはやめておきます。
結論
- KVMのディスクアクセス速度はなんか悪さされて正確に測れなかった
- VirtualBoxのディスクアクセスのオーバーヘッドは実用上無視できる (個人的見解)
- 引き続きVirtualBoxでWindowsを仮想化して使う