虚拟化平台IO劣化分析

虚拟化,平台,io,分析 · 浏览次数 : 49

小编点评

## IO争用导致虚拟机IO性能问题分析 **背景:** 虚拟化平台IO性能问题导致了多个虚拟机数据比物理机好,尤其是IO写入方面。 **结论:** 虚拟化平台IO争用导致了数据比物理机好,虚拟化平台的写入总计应该不如物理机的优秀。 **分析:** 1. **虚拟化资源不可用:** 虚拟化平台的资源无法保证,挂载同样存储的机器在进行高IO的操作会影响自己的业务IO能力。 2. **虚拟化写入总计应该不如物理机的优秀:** 虚拟化层有一定的损耗,虚拟化平台的写入总计应该不如物理机的优秀。 3. **不同发行版的IO侧重不同:** 不同发行版的IO侧重不同,有的读性能好的, 有的写入性能好。 4. **不同文件系统、不同操作系统的IO模型不太一样:** 不同文件系统、不同操作系统(Win和linux)因为进程模型、IO模型,不太一样,导致比较难以进行性能比较。 5. **配置文件对IO性能影响较大:** 使用的配置文件[global]runtime=120time_based_group_reporting_directory=/fiotestrefill_buffers[innodb-trxlog]filename=test-innodb.logbsrange=512-2048ioengine=syncrw=writesize=2Gfsync=1overwrite=1rate_iops=64invalidate=1numjobs=64 [mysql-binlog]filename=test-mysql-bin.logbsrange=512-1024ioengine=syncrw=writesize=12Gsync=1rw=writeoverwrite=1fsync=100rate_iops=64invalidate=1numjobs=64 [innodb-data]filename=test-innodb.datbs=16Kioengine=psyncrw=randrwsize=20Gdirect=1rwmixread=80numjobs=32 #thinktime=600#thinktime_spin=200#thinktime_blocks=2 使用的工具Linux平台 fioWindows平台 diskspd, fio. 配置文件与命令fio mysql.conffio.exe mysql.conf或者是diskspd.exe -b4K -t4 -r -w30 -o32 -d10 -Sh C:\\Users\\Administrator\\test-innodb.dat测试结果分析-物理机器的参考结果 Raid卡配置读IOPS写IOPS8块SSD Raid545.7k15.1k12块SSD Raid1080.5k26.5k 测试结果分析-单个虚拟机的参考结果 22块960GSSD-Raid5系统类型读取写入openeuler22037.6k5.1kCentOS798.6k4.9krocky878.8k3.3kkylinv109.0k4.6k合计34k17.9k虚拟机增加num_jobs的数值系统类型读取写入kylinv10-4个机器并发9.0k4.6kkylinv10-160 jobs39.3k14.1kkylinv10-640 jobs53.5k15.3k **总结:** 虚拟化平台IO争用导致了数据比物理机好,虚拟化平台的写入总计应该不如物理机的优秀。建议在使用虚拟化平台进行IO操作时,尽量减少虚拟机数量,选择性能较高的文件系统,并使用性能优异的工具进行IO操作。

正文

虚拟化平台IO劣化分析


背景

最近同事让帮忙做几个虚拟机进行性能测试. 
本来应该搭建CentOS/Winodws平台进行相关的测试工作. 

但是为了环境一致性, 使用了ESXi6.7 进行虚拟化
然后这段时间一直进行IO方面的学习与研究. 
一开始发现总是有很多对不上的地方, 今天早上再给windows平台进行测试时发现了数据比linux好
感觉比较奇怪, 最后才发现应该是 虚拟化平台下IO争用导致的问题. 

这里总结一下, 便于后期学习和参考

结论

1. 专用的物理机器的资源是可以保证的. 虚拟化的资源无法保证. 如果挂载同样存储的机器在进行高IO的操作,会影响自己的业务IO能力. 
2. 虚拟化的写入总计应该不如物理机的优秀. 虚拟化层有一定的损耗. 也就是两个虚拟机的合计IO应该不如单台物理机器来的好. 
   当然前提条件是物理机的 num_jobs和io_depth 与两个虚拟机的参数能够匹配起来. 
3. 不同发行版的IO侧重不同,有的读性能好的, 有的写入性能好. 跟内核参数,还有IO调度算法有较大的关系.
4. 不同文件系统, 不同操作系统(Win和linux) 因为进程模型,IO模型,不太一样.不太好直接进行比较. 

使用的配置文件

[global]
runtime=120
time_based
group_reporting
directory=/fiotest
refill_buffers

[innodb-trxlog]
filename=test-innodb.log
bsrange=512-2048
ioengine=sync
rw=write
size=2G
fsync=1
overwrite=1
rate_iops=64
invalidate=1
numjobs=64
 
[mysql-binlog]
filename=test-mysql-bin.log
bsrange=512-1024
ioengine=sync
rw=write
size=12G
sync=1
rw=write
overwrite=1
fsync=100
rate_iops=64
invalidate=1
numjobs=64
 
[innodb-data]
filename=test-innodb.dat
bs=16K
ioengine=psync
rw=randrw
size=20G
direct=1
rwmixread=80
numjobs=32
 
#thinktime=600
#thinktime_spin=200
#thinktime_blocks=2

使用的工具

Linux平台 fio
Windows平台 diskspd, fio. 

配置文件与命令

fio mysql.conf
fio.exe mysql.conf
或者是
diskspd.exe -b4K -t4 -r -w30 -o32 -d10 -Sh C:\Users\Administrator\test-innodb.dat

测试结果分析-物理机器的参考结果

Raid卡配置 读IOPS 写IOPS
8块SSD Raid5 45.7k 15.1k
12块SSD Raid10 80.5k 26.5k

测试结果分析-单个虚拟机的参考结果 22块960GSSD-Raid5

Raid卡配置 读IOPS 写IOPS
OpenEuler 41.3K 14.7k
CentOS79 42k 14.5k
rocky87 36.2k 12.5k
kylinv10 39.3k 14.1k
Windows2019 36.6k 13.5k

测试结果分析-4个虚拟机的参考结果 22块960GSSD-Raid5

系统类型 读取 写入
openeuler2203 7.6k 5.1k
CentOS79 8.6k 4.9k
rocky87 8.8k 3.3k
kylinv10 9.0k 4.6k
合计 34k 17.9k

虚拟机增加num_jobs的数值

系统类型 读取 写入
kylinv10-4个机器并发 9.0k 4.6k
kylinv10-160 jobs 39.3k 14.1k
kylinv10-640 jobs 53.5k 15.3k

与虚拟化平台IO劣化分析相似的内容:

虚拟化平台IO劣化分析

# 虚拟化平台IO劣化分析 ## 背景 ``` 最近同事让帮忙做几个虚拟机进行性能测试. 本来应该搭建CentOS/Winodws平台进行相关的测试工作. 但是为了环境一致性, 使用了ESXi6.7 进行虚拟化 然后这段时间一直进行IO方面的学习与研究. 一开始发现总是有很多对不上的地方, 今天早上

[转帖]VMware ESXi虚拟化平台驱动查询

虚拟化平台升级或者增加服务器时,如果驱动不在官方兼容性列表中,容易导致未知问题。出现问题后,即使有售后服务,官方也不进行支持。所以在正式上线之前将驱动升级到官方兼容性列表中,显得尤为重要。 本文将介绍在VMware ESXi 6.7 U3版本下,查询网卡,HBA及RAID卡驱动版本,以及去官方查看兼

不同平台,系统虚拟化的损耗学习

不同平台,系统虚拟化的损耗学习 摘要 昨天研究了 arm 平台的KVM的损耗. 当然, 因为自己搭建的QEMU虚拟化平台可能性能不是很优秀 今天正好有机会找到一套x86的云海OS虚拟化平台, 准备进行一下验证. 思路跟昨天比较一致 不过不准备进行三次取平均值了, 意义不是很大. 但是这次准备比较 多

[转帖]vSphere虚拟化平台(vCenter和ESXi)升级注意事项

https://www.dinghui.org/vmware-vsphere-upgrade.html 最近两年做了蛮多vSphere升级项目,几点思路,做一下汇总整理如下供参考: 一、升级必要性 1、软件生命周期:在评估软件升级必要性分析中,vSphere软件生命周期是重点考虑的问题; 生命周期查

[转帖]20. 利用Veeam ONE监控vSphere虚拟化平台(Veeam ONE安装及配置)

Veeam Backup & Replication主要用于备份及同步虚拟化平台,而Veeam ONE则主要用于监控平台之用,可以监控Veeam Backup & Replication的备份及同步情况,也可以监控VMware vSphere虚拟化平台及微软的Hyper-v虚拟化平台。本例主要介绍监

[转帖]virsh命令创建、还原和删除KVM虚拟机快照

https://www.jianshu.com/p/2afb0d9c2c41 在虚拟化平台上进行系统管理工作时,经常需要在开始重大操作比如部署补丁和代码前先设置一个虚拟机快照snapshot。虚拟机快照是特定时间点的虚拟机磁盘的副本。换句话说,快照保存了给定的时间点虚拟机的状态和数据。 我们可以在哪

centos7.9 扩容swap分区

情况说明:在VMware vsphere的虚拟化平台下,为了快速部署虚拟服务器,我们常常使用模板部署虚拟机。但真实业务有时要求的文件系统分区和大小常常与模板不同,这时便需要自定义硬件资源和使用 LVM 方式扩容。在定义硬盘的时候我们可以在原有的硬盘上直接增加,然后虚拟机创建完成后再进入系统进行扩容,

虚拟机磁盘扩容(parted、lvm)

1、虚拟化平台虚拟机添加硬盘 系统查看添加的硬盘 [root@yumserver ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:

[转帖]linux 调优篇 :硬件调优(BIOS配置)* 壹

https://blog.csdn.net/tony_vip?type=blog 一. 设置内存刷新频率为Auto二. 开启NUMA三. 设置Stream Write Mode四. 开启CPU预取配置五. 开启SRIOV六. 开启SMMU 通过在BIOS中设置一些高级选项,可以有效提升虚拟化平台性能

【转帖】linux 调优篇 :硬件调优(BIOS配置)* 壹

一. 设置内存刷新频率为Auto二. 开启NUMA三. 设置Stream Write Mode四. 开启CPU预取配置五. 开启SRIOV六. 开启SMMU 通过在BIOS中设置一些高级选项,可以有效提升虚拟化平台性能。表1列出了TaiShan服务器和性能相关的BIOS推荐配置项。 表1 BIOS性