我在其上设置了一个带有KVM来宾的系统,以测试客户端性能与主机的比较情况 . 系统硬件规格如下:
-
硬盘:ATA SAMSUNG HD502HI
-
CPU:Intel(R)Core(TM)i3 CPU
-
内存大小:8GB
我为guest虚拟机设置了6GB内存,4个虚拟cpu和一个具有原始格式,virtio接口,写入缓存模式和本机io模式的磁盘映像文件 .
操作系统是主机和guest虚拟机上的Ubuntu-14.04 64位(内核:3.13.0-45-通用) .
然后,我开始使用fio基准测试工具在主机和来宾上对磁盘io进行基准测试 . 您可以在下表中看到结果(在fio命令中,选项大小= 512m,包括invalidate = 1):
Bandwidth
| | Random Read | Random write|Seqential Read |Seqential write|
| Host | 465347B/s | 1199.7MB/s | 107878KB/s | 1434.2MB/s |
| Guest | 46389KB/s | 989223KB/s | 1418.3MB/s | 1096.4MB/s |
Iops
| | Random Read | Random write|Seqential Read |Seqential write|
| Host | 113 | 306960 | 26969 | 367148 |
| Guest | 11597 | 247305 | 363080 | 280668 |
我还在主机和guest上做了一个简单的副本(文件大小= 564M),结果几乎相同 . (主机中的时间:6.282s和来宾中的时间:6.352s) .
我运行了另一个基准测试,其中从Mysql数据库中读取了3,000,000条记录并将其编入索引到Elasticsearch . 结果是不合理的,因为客人的工作运行得更快 . (主持人时间:5m6.827s,客人时间:2m19.469s) .
我真的很困惑!为什么客户IO性能在某些测试中更好?
1 回答
我想到了几个可能的原因:
如果在KVM中使用写回缓存,有时在访客中看到的I / O性能比在主机上要好 . 此提升类似于您在硬件RAID控制器上安装电池支持的写缓存时所看到的I / O提升 . 写回缓存的缺点是在电源故障时存在磁盘损坏的风险 .
基准依赖于精确的时钟 . 当你在一个guest虚拟机中运行一个基准测试时,你会非常相信VM的可靠性's clock. In your case, you'几分钟' difference, which makes me think this probably isn'这是什么's going on, but I mention it because it'在对VM进行基准测试时需要注意的事项 .