kvm virtio 磁盘性能随 iozone 工作负载严重扩展

kvm virtio 磁盘性能随 iozone 工作负载严重扩展

我正在进行一些测试,以了解为什么我们的一些工作负载会产生非常糟糕的“用户体验”。db 相关活动

我们有一台 dl160g9 服务器,B140i 控制器(4 个 LFF 磁盘 7.2k rpm)。主持人centos 7,虚拟化引擎是虚拟机,版本是105.el7_2.4(1.5.3)来自 centos virt sig。磁盘是厚 LVM 卷在顶部假袭击 5由b140i控制器生成。调整设置为表演(设置为 virt guest 不会发生太大变化)。

我们跑win 和 linux VM. 无论如何存储是本地的,连接到虚拟机通过 virtio缓存=无io=本机

由于我们的数据库文件很小,因此我使用以下命令模拟工作负载:

iozone -i 0 -i 8 -s 4m -t X

在哪里X 为 1(简单情况)或 25(实际用户群)

这些是主持人

Children see throughput for 1 mixed workload    = 1768421.25 kB/sec
Parent sees throughput for 1 mixed workload     =  293368.05 kB/sec
Min throughput per process          = 1768421.25 kB/sec 
Max throughput per process          = 1768421.25 kB/sec
Avg throughput per process          = 1768421.25 kB/sec
Min xfer                    =    4096.00 kB

Children see throughput for 25 mixed workload   = 12061204.12 kB/sec
Parent sees throughput for 25 mixed workload    =   39519.61 kB/sec
Min throughput per process          = 1017999.00 kB/sec 
Max throughput per process          = 1237047.00 kB/sec
Avg throughput per process          =  482448.16 kB/sec
Min xfer                    =    2212.00 kB

Linux 虚拟机(ubuntu 14.04 LTS)显示:

Children see throughput for 1 mixed workload    = 1901520.62 KB/sec
Parent sees throughput for 1 mixed workload     =  176180.65 KB/sec
Min throughput per process          = 1901520.62 KB/sec 
Max throughput per process          = 1901520.62 KB/sec
Avg throughput per process          = 1901520.62 KB/sec
Min xfer                    =    4096.00 KB

Children see throughput for 25 mixed workload   = 5338608.75 KB/sec
Parent sees throughput for 25 mixed workload    =   15434.67 KB/sec
Min throughput per process          =       0.00 KB/sec 
Max throughput per process          = 2675395.75 KB/sec
Avg throughput per process          =  213544.35 KB/sec
Min xfer                    =       0.00 KB

Windows 10 64 位专业版虚拟机结果:

 Children see throughput for 1 mixed workload    =  496220.16 KB/sec
 Parent sees throughput for 1 mixed workload     =  162133.06 KB/sec
 Min throughput per process                      =  496220.16 KB/sec
 Max throughput per process                      =  496220.16 KB/sec
 Avg throughput per process                      =  496220.16 KB/sec
 Min xfer                                        =    4096.00 KB

 Children see throughput for 25 mixed workload   = 1298231.58 KB/sec
 Parent sees throughput for 25 mixed workload    =    7626.09 KB/sec
 Min throughput per process                      =       0.00 KB/sec
 Max throughput per process                      =  285706.31 KB/sec
 Avg throughput per process                      =   51929.26 KB/sec
 Min xfer                                        =       0.00 KB

我在这里看到一些问题:

  • 根据virtio 开销但线程并发访问似乎很乱,尤其是 0 KB/秒的最小值很奇怪

  • 虽然 Linux VM 的扩展性似乎很差,但即使在 1 个线程的情况下,Win(以及相关的 virtio 驱动程序)也似乎一团糟。虽然我预计会有一些开销,但人们得到了更好的结果这里

当然,win 10 是新的,仅受最新(117)驱动程序支持,但 win 8.1 也给出了类似的结果(由于本文篇幅较大,因此省略)。

我愿意接受任何可以指明正确方向的文档或建议:我所知道的是,cache=none、原始 LVM 和正确的 tuned-adm 足以获得良好的结果。

更新信息

内核(库存):Linux dl190g9 3.10.0-327.18.2.el7.x86_64 #1 SMP 2016 年 5 月 12 日星期四 11:03:55 UTC x86_64 x86_64 x86_64 GNU/Linux

qemu-kvm(centos virt sig):105.el7_2.4(1.5.3)

libvirtd:1.2.17

当我说 virtio 驱动程序时,我的意思是 libvirt xml 文件将 virtio 报告为总线。

  • Win 显示“Red Hat virtIO SCSI 磁盘设备”

  • linux 将磁盘报告为“00:06.0 SCSI 存储控制器:Red Hat,Inc Virtio 块设备”

更新 2

  • 我之前说过,Windows 上的 1 线程性能出乎意料地差。它实际上符合发布的结果这里:本机和Win VM的吞吐量比率为1:3。

  • 这使得两种场景都存在严重的扩展问题:主机扩展为 1:3,虚拟机扩展为 1:10

根据评论,我希望在 7.3 中有所改进,根据 Red Hat发布时间表应该在不久的将来发生(两次发布之间大约间隔 6 个月)。

谢谢

相关内容