http://www.linux-kvm.org/page/Tuning_KVM の指示に従いました。ホストはDebianSqueeze Kernel 3.2、QEMU 1.0、libvirt 0.9.12(すべてsqueeze-backportから)です。 4人のゲスト全員がDebianSqueeze Kernel3.2でもあります。
したがって、ゲストXMLの設定は次のとおりです。
<cpu model='Host-passthrough'/>
<disk [...]/>
<driver name='qemu' type='raw' cache='none'/>
<target [...] bus='virtio'/>
</disk>
<interface [...]>
<model type='virtio'/>
</interface>
ゲストのIOスケジューラはnoopに設定されています。ホストで、パフォーマンスに大きな違いはなく、noop/deadline/cfqを試しました。すべてのゲストストレージはLVMによって提供されます。 cache='none'
を使用していて、すべてのゲストに注目すべき負荷がない場合、ホストの15分の平均CPU負荷は最大3〜4になります。しかし、cache='writeback'
を使用すると、CPUの負荷が1未満に低下します。LVMの推奨設定がホストの負荷を高める理由を誰かが説明できますか?
ところで:ディスクベンチマークを実行する場合、オプションnone
はwriteback
よりも高いIOパフォーマンスになります。
OK、ディスクセクションにオプションio='native'
を追加し、ホストシステムでIOスケジューラーcfq
を使用すると、システムに最適な結果が得られます。IOレートはゲストXMLのオプションio
のすべての値でほぼ同じであり、IOホストとゲストのスケジューラーの場合、cache='unsafe'
のみが与えますパフォーマンスが大幅に向上します。ただし、ゲストにio='native'
、noop
スケジューラー、ホストにcfq
スケジューラーを使用した場合にのみ、CPU負荷が最小になります。