注,不使用virtio方式启动sheepdog的命令行参数为:
1qemu-system-x86_64 --enable-kvm -m 4096 -smp 4 -drive
2file=sheepdog:mint,index=0
3-drive file=sheepdog:data,index=1 -vnc :1 -daemonize

吞吐量测试1:不使用对象缓存
从测试结果看,使用virtio方式启动客户机有利有弊:

提高了中小数据块读写操作的吞吐量

当数据块大小在16KB-512KB之间时,顺序读的吞吐量提高10MB/s-30MB/s不等
当数据块大小在16KB-256KB之间时,顺序写的吞吐量提高5MB/s-8MB/s不等
大大降低了超大数据块读操作的吞吐量,至于为何virtio在这种情况下会降低测试的吞吐量,尚不清楚

当数据块大小达到2MB或者4MB时,顺序读的吞吐量降低80MB/s-90MB/s
以下两图,上图为512MB下的测试数据,下图为该情况下,与无优化sheepdog读写512MB数据文件两者吞吐量之差。

 

吞吐量测试2:使用对象缓存
使用了对象缓存,顺序读写的吞吐量与数据文件大小没有直接关系,即使数据文件大小超过可用内存。

同时也使用了virtio,并没有因此降低读取大数据块的吞吐量。
由于SSD硬盘的特点,数据块越大,吞吐量越高,在数据块大小为4MB的情况下,顺序读的吞吐量可达240MB/s,顺序写也有130MB/s;如果数据块大小只有16KB,顺序读和顺序写的吞吐量分别只有55MB/s和35MB/s。