Hyper-V第二代虚拟机的硬件性能损失

我有以下configuration:

  • 使用Hyper-V安装在裸机上的Windows Server 2012 R2操作系统。 OS安装在RAID1 850 PRO驱动器上。
  • Windows Server 2012 R2 Guest OS第2代虚拟机位于Windows存储空间镜像950 PRO驱动器上。

我使用Crystal Disk在Windows Storage Space镜像950 PRO驱动器上运行了一些testing。 这些是以下统计数据。

在裸金属上进行testing时

Sequential Read (Q= 32,T= 1) : 4178.159 MB/s Sequential Write (Q= 32,T= 1) : 1504.286 MB/s Random Read 4KiB (Q= 32,T= 1) : 460.155 MB/s [112342.5 IOPS] Random Write 4KiB (Q= 32,T= 1) : 266.983 MB/s [ 65181.4 IOPS] Sequential Read (T= 1) : 2042.397 MB/s Sequential Write (T= 1) : 1500.305 MB/s Random Read 4KiB (Q= 1,T= 1) : 40.059 MB/s [ 9780.0 IOPS] Random Write 4KiB (Q= 1,T= 1) : 76.623 MB/s [ 18706.8 IOPS] 

在VM中testing时

  Sequential Read (Q= 32,T= 1) : 4635.549 MB/s Sequential Write (Q= 32,T= 1) : 1502.071 MB/s Random Read 4KiB (Q= 32,T= 1) : 181.225 MB/s [ 44244.4 IOPS] Random Write 4KiB (Q= 32,T= 1) : 110.272 MB/s [ 26921.9 IOPS] Sequential Read (T= 1) : 1624.129 MB/s Sequential Write (T= 1) : 1381.203 MB/s Random Read 4KiB (Q= 1,T= 1) : 24.528 MB/s [ 5988.3 IOPS] Random Write 4KiB (Q= 1,T= 1) : 34.563 MB/s [ 8438.2 IOPS] 

随机读取/写入的性能下降了近50%。 我重新testing了几次以确认价值。 这是预期的吗?

首先,使用DiskSPD而不是其他任何东西是个好主意。 只是因为Microsoft在内部质量保证过程中使用了DiskSPD。

https://blogs.technet.microsoft.com/josebda/2014/10/13/diskspd-powershell-and-storage-performance-measuring-iops-throughput-and-latency-for-both-local-disks-and- SMB文件股/

其次这是Hyper-V的已知问题。 在Windows Server 2016中,它甚至以相同的方式呈现。简而言之,如果您的底层存储具有非常低的延迟,则通常会导致2倍 – 4倍的I / O性能下降。 您可以尝试一些解决方法来改善您的状况:

使用多个卷。 不要在单个虚拟磁盘或名称空间之上分配多个CSV,而要确保本地安装点(如果您从DAS直接运行虚拟机),CSV或SMB3共享将在不同的逻辑卷之上结束! 您必须拥有一台具有多个VHD文件或多台虚拟机的虚拟机,才能以这种方式“汇总”综合性能。 如果你有一个虚拟机与一个附加的VHD,这种方法将不会有明显的帮助。

使用“中间人”。 在列出的第一种方法中,这是一种渐进的改进。 您可以获得多个逻辑卷,将一些基于Windows的软件定义存储封装在最上面,并允许它为连接单个VHD的单个VM汇聚I / O性能。 如果您运行单个Oracle RAC或SQL Server VM,则可能发生这种情况,而这正是您希望获得高IOPS的一种情况。

禁用I / O调度程序。 设置registry项…

“HKLM \系统\ CurrentControlSet \控制\ StorVSP \ IOBalance \启用”

…零! PS不要忘记重启,因为没有任何改变。

这一个可能会或可能不会工作。 在RAID0的一对三星850 Pro SSD上,我们得到了±20%的提升。

希望有一些东西会为你工作。 请更新您的结果为未来的潜伏者:)