web-dev-qa-db-ja.com

KVM cache = 'none'の場合、CPUの負荷が高くなります

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の推奨設定がホストの負荷を高める理由を誰かが説明できますか?

ところで:ディスクベンチマークを実行する場合、オプションnonewritebackよりも高いIOパフォーマンスになります。

1
rabudde

OK、ディスクセクションにオプションio='native'を追加し、ホストシステムでIOスケジューラーcfqを使用すると、システムに最適な結果が得られます。IOレートはゲストXMLのオプションioのすべての値でほぼ同じであり、IOホストとゲストのスケジューラーの場合、cache='unsafe'のみが与えますパフォーマンスが大幅に向上します。ただし、ゲストにio='native'noopスケジューラー、ホストにcfqスケジューラーを使用した場合にのみ、CPU負荷が最小になります。

2
rabudde