我有以下配置:
- Windows Server 2012 R2 操作系统安装在带有 Hyper-V 的裸机上。操作系统安装在 RAID1 850 PRO 驱动器上。
- Windows Server 2012 R2 客户操作系统第二代 VM 位于 Windows 存储空间镜像 950 PRO 驱动器上。
我使用 Crystal Disk 对 Windows Storage Space Mirrored 950 PRO 驱动器进行了一些测试。以下是统计数据。
在裸机上测试时
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 中测试时
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%。我重新测试了几次以确认数值。这是预料之中的吗?
答案1
首先,使用 DiskSPD 而不是其他任何工具都是一个好主意。因为 Microsoft 在其内部 QA 过程中使用了 DiskSPD。
其次,这是 Hyper-V 的已知问题。它甚至以或多或少相同的方式存在于 Windows Server 2016 中。简而言之,如果底层存储的延迟非常低,则 I/O 性能通常会下降 2 倍 - 4 倍。您可以尝试几种解决方法来改善您的情况:
使用多个卷。不要在单个虚拟磁盘或命名空间上分配多个 CSV,而是确保本地挂载点(如果您直接从 DAS 运行虚拟机)、CSV 或 SMB3 共享位于不同的逻辑卷之上!您必须拥有一个具有多个 VHD 文件的虚拟机或多个虚拟机,才能以这种方式“聚合”组合性能。如果您有一个带有单个附加 VHD 的虚拟机,这种方法显然不会有帮助。
使用“中间人”。这可以说是第一种方法的渐进式改进。您可以获得多个逻辑卷,在上面包装一些基于 Windows 的软件定义存储,并允许它为附加单个 VHD 的单个 VM 聚合 I/O 性能。如果您运行单个 Oracle RAC 或 SQL Server VM,并且它正是您想要高 IOPS 的 VM,那么这种情况就会发生。
禁用 I/O 调度程序。设置注册表项...
“HKLM\SYSTEM\CurrentControlSet\Control\StorVSP\IOBalance\Enabled”
... 归零!PS 不要忘记重新启动,因为没有任何变化。
这个可能有效也可能无效。我们在 RAID0 中的一对三星 850 Pro SSD 上获得了 ±20% 的提升。
希望对你有用。请更新你的结果,以便将来的潜水者参考 :)