こんにちは私は最近、qemuターゲット(そのDISCARD/TRIMサポート用)を通してrbdを介してvirtio-scsiの実験を行い、同じマシン上のrioセットアップ上のvirtio-blkのスループットとiopsを比較しました。お客様。シーケンシャルリードライトのスループットは7倍(42.3MB/s対309MB/s)、ランダムリードライトのiopsは10倍(546対5705)です。virtio-scsiは私の実験ではvirtio-blkよりもはるかに遅いのはなぜですか(over and ceph rbd image)?
私が行ったことは、OpenStack Junoを使って仮想マシンをセットアップして、virtio-blk over rbdセットアップを実行していたことです。これに
<disk type='network' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<auth username='cinder'>
<secret type='ceph' uuid='482b83f9-be95-448e-87cc-9fa602196590'/>
</auth>
<source protocol='rbd' name='vms/c504ea8b-18e6-491e-9470-41c60aa50b81_disk'>
<host name='192.168.20.105' port='6789'/>
</source>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
:
<disk type='network' device='disk'>
<driver name='qemu' type='raw' cache='writeback' discard='unmap'/>
<auth username='cinder'>
<secret type='ceph' uuid='482b83f9-be95-448e-87cc-9fa602196590'/>
</auth>
<source protocol='rbd' name='vms/c504ea8b-18e6-491e-9470-41c60aa50b81_disk'>
<host name='192.168.20.105' port='6789'/>
</source>
<target dev='vda' bus='scsi'/>
<controller type='scsi' model='virtio-scsi' index='0'/>
</disk>
ソフトウェアのバージョンは以下のとおりです。
QEMU 2.5.1
それから私は、このことから、libvirtの設定] XMLに関連する部分を修正しましたlibvirt 1.2.2
カーネル 3.18.0-031800ジェネリック#201412071935 SMP月12月8日午後12時36分34秒UTC 2014 x86_64版(Ubuntuの14.04カーネル)
そして、ハイパーバイザは、KVMです。
virtio-scsiとvirtio-blkのパフォーマンスの差はそれほど大きくないとは思えません。だから私が間違っていたこと、そして合理的なパフォーマンスを達成する方法を指摘してください。
制約があるのは、多くのパッチやコーディングをしなくてもOpenStack(Junoの場合は理想的です)に適したソリューションが欲しいということです。たとえば、virtio-scsi + vhost-scsi + scsi-mqについて聞いたことがありますが、現在はOpenStackでは利用できません。
これは質問に答えるためです...? – rustyx
いいえ、そうではありません。あなたがゲストで 'fstrim'を呼び出すまで、または' discard'オプション、 'rm'でマウントすると、unmapを実行することはありません。 –