[KVM]ゲストOS(Windows7)のHDD,R/W性能

KVM上で動作するWinodws7からのハードディスク読み書き性能が設定の違いによりどのように変わるか調査した。

パラメータは、下記の2つの設定を変えて CrystalDiskMark6 で計測した。ちなみに使用しているストレージはホストOSに接続しているHDDを利用している。

  1. ディスクバス
    ・IDE
    ・SATA
    ・VirtIO
  2. キャッシュモード
    ・default
    ・none

結果は以下の通り。

ディスクキャッシュ
ディスクバス none default
IDE
SATA
VirtIO

キャッシュを利用しない場合はどのディスクバスを利用してもほとんど誤差くらいの違いしか現れなかったが、キャッシュを利用する場合はダントツでVirtIOが早いことが分かった。ライブマイグレーションを利用するならキャッシュモードはnoneにしておくほうが良いが、普通に使用する分にはキャッシュを利用するほうが良さそう。

当初はここまでの予定だったが、キャッシュモードの細かい違いによる挙動についても気になったので、次の条件でも比較することにした。(IDEとSATAは変化なさそうなのでIDEのみ計測)

  1. ディスクバス
    ・IDE
    ・VirtIO
  2. キャッシュモード
    ・default
    ・none
    ・writethrough
    ・writeback
    ・directsync
    ・unsafe

結果は以下の通り。

ディスクキャッシュ
ディスクバス default none write
through
write
back
direct
sync
unsafe
IDE
VirtIO

IDEのwritethroughでこんなに速度が出ているのが不思議…(再度やっても似た結果でした)

以上

KVM上のWindows7にCPUが2個しか認識されない

以前仕事で使用していたPCではKVM上で動作しているWindows7でCPU数が2以上認識されていたのに自宅でやってみたら何故か2個しか認識されなかった。少し悩んだのでメモ

【2個しか認識されない】

・設定(virt-manager)

・タスクマネージャー

このように、設定では8個割り当てているのだが、何故か2個しか認識されなかった。

少し調べてみたらこんな記事を発見!

KVM上でのWindows7に割り当てるCPUは2まで!

ここで気づいたのだが、KVMでは1つのvcpuが1つの物理cpuとなっている。つまり、今回の設定ではマザーボードにCPUソケットが8個あるようなもので、1つの物理cpuに8コアという構成になっていなかった。Windows7(Ultimate)では対応しているCPUソケットの数は2までとなっているため、認識されなかった。試してはいないが、Windows8やWindows10なども同じような状況になるだろう。

Windows7に2コア以上を割り当てるためには下記の設定を行う

【2個以上認識される】

・設定(virt-manager)

 

トポロジを手動設定にしてソケット数が2以下になるようにして、(ソケット数)×(コア数)×(スレッド数)が割り当てたい数になるようにする。そして、現在の割り当ても割り当てたい数になっていることを確認する。

・タスクマネージャー

無事認識されました。

以上