本文档介绍如何在 Windows 虚拟机 (VM) 实例上对 Persistent Disk 性能进行基准化分析。对于 Linux 虚拟机,请参阅在 Linux 虚拟机上对 Persistent Disk 性能进行基准化分析。
如需衡量正在运行的实例上正在使用的磁盘的 IOPS 和吞吐量,请使用预期的配置对文件系统进行基准化分析。使用此选项可测试实际工作负载,而不会丢失现有磁盘上的内容。请注意,在对现有磁盘上的文件系统进行基准化分析时,有很多特定于开发环境的因素可能会影响基准化分析结果,并且您可能不会达到磁盘性能限制。
如需衡量永久性磁盘的原始性能,请直接对块设备进行基准化分析。使用此选项可将原始磁盘性能与磁盘性能限制进行比较。
在 C4 虚拟机上,Windows 支持每个设备提交队列的深度上限为 1024。当队列已满时,Windows 会停止提交 I/O,直到队列已部分排空,这会显著降低性能。为避免触发此条件,我们建议您将基准测试工作负载限制为每个挂接的卷的总队列深度为 1024。
配置基准测试软件
如需对 Windows 虚拟机上的 Persistent Disk 性能进行基准化分析,请使用 DISKSPD
。
打开 Powershell 并使用以下命令下载
DISKSPD
工具:$client = New-Object System.Net.WebClient $client.DownloadFile("https://github.com/Microsoft/diskspd/releases/latest/download/DiskSpd.zip","$env:temp\DiskSpd-download.zip") Expand-Archive -LiteralPath "$env:temp\DiskSpd-download.zip" C:\DISKSPD Get-ChildItem C:\DISKSPD
对正在运行的虚拟机实例上的磁盘的 IOPS 和吞吐量进行基准化分析
如需衡量正在运行的虚拟机实例上活跃磁盘的实际工作负载的 IOPS 和吞吐量,而不丢失磁盘的内容,请对照现有文件系统上的新目录进行基准化分析。
在以下步骤中,假设要测试的磁盘已作为 D:
装载,并且命令在提升权限的命令提示符窗口中执行:
验证
DISKSPD
软件配置,并将目录更改为 64 位二进制文件:cd C:\DISKSPD\amd64
在磁盘上创建一个名为
DISKTEST.DAT
的新 10 GB 文件:set TESTFILE=D:\DISKTEST.DAT diskspd -d0 -c10G %TESTFILE%
使用 1 MB 的 I/O 块大小和至少 64 的 I/O 深度,通过执行具有多个并行数据流(16 个或更多)的顺序写入来测试写入吞吐量:
diskspd -d60 -b1M -o64 -Sh -w100 -t16 -si %TESTFILE%
使用 4 KB 的 I/O 块大小和至少 256 的 I/O 深度,通过执行随机写入来测试写入 IOPS:
diskspd -d60 -b4K -o256 -Sh -w100 -r %TESTFILE%
使用 1 MB 的 I/O 块大小和至少 64 的 I/O 深度,通过执行具有多个(16 个或更多)并行数据流的顺序读取来测试读取吞吐量:
diskspd -d60 -b1M -o64 -Sh -t16 -si %TESTFILE%
使用 4 KB 的 I/O 块大小和至少 256 的 I/O 深度,通过执行随机读取来测试读取 IOPS:
diskspd -d60 -b4K -o256 -Sh -r %TESTFILE%
清理:
del %TESTFILE%
对原始永久性磁盘的性能进行基准化分析
如需在开发环境之外单独衡量 Persistent Disk 卷的性能,请在一次性的 Persistent Disk 和虚拟机上测试块设备的读写性能。
验证
DISKSPD
软件配置,并将目录更改为 64 位二进制文件:cd C:\DISKSPD\amd64
验证磁盘上没有非预留的分区。在提升权限的命令提示符窗口中输入
diskpart
。diskpart
列出挂接到虚拟机的磁盘:
DISKPART> list disk
在以下示例输出中,输出会显示新创建的 1 TB 磁盘,即磁盘 1:
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 120 GB 1024 KB * Disk 1 Online 1024 GB 1023 GB *
选择要进行基准测试的磁盘。
DISKPART> select disk 1
列出所选磁盘上的分区。
DISKPART> list partition
Partition ### Type Size Offset ------------- ---------------- -------- ------- Partition 1 Reserved 15 MB 17 KB Partition 2 Primary 1024 GB 16 MB
选择主分区 2:
DISKPART> select partition 2
删除所选分区:
DISKPART> delete partition
退出 diskpart
DISKPART> exit
如果您打算进行基准化分析的磁盘除了预留分区之外具有任何其他分区,则应重复上述步骤。当只保留预留分区时,请继续执行以下步骤:
确定磁盘并验证没有分区后,将
TESTDRIVE
环境变量设置为“#”,后跟要测试的磁盘编号。C:/> set TESTDRIVE=#1
使用 1 MB 的 I/O 块大小和至少 64 的 I/O 深度,通过执行具有多个并行数据流(16 个或更多)的顺序写入来测试写入吞吐量:
diskspd -d60 -b1M -o64 -Sh -t16 -si -w0 %TESTDRIVE%
使用 4 KB 的 I/O 块大小和至少 256 的 I/O 深度,通过执行随机写入来测试写入 IOPS:
diskspd -d60 -b4K -o256 -Sh -r -w0 %TESTDRIVE%
测试写入延迟时间。在测试 I/O 延迟时间时,请务必不要让虚拟机达到带宽或 IOPS 上限,否则观察到的延迟时间将无法反映出实际的永久性磁盘 I/O 延迟时间。
diskspd -d60 -b4K -o4 -Sh -r -w0 -L %TESTDRIVE%
使用 1 MB 的 I/O 块大小和至少 64 的 I/O 深度,通过执行具有多个(16 个或更多)并行数据流的顺序读取来测试读取吞吐量:
diskspd -d60 -b1M -o64 -Sh -t16 -si %TESTDRIVE%
使用 4 KB 的 I/O 块大小和至少 256 的 I/O 深度,通过执行随机读取来测试读取 IOPS:
diskspd -d60 -b4K -o256 -Sh -r %TESTDRIVE%
如需测试读取延迟时间,请务必用数据填充磁盘,以获得真实的延迟时间测量结果。在此测试期间,虚拟机不得达到 IOPS 或吞吐量限制,因为在永久性磁盘达到其饱和上限后,它会拒绝传入的 I/O 操作,这将反映为人为增加 I/O 延迟时间。
diskspd -d60 -b4K -o4 -Sh -r -L %TESTDRIVE%
测试顺序读取带宽。
diskspd -d60 -b1M -o64 -Sh -t4 -si %TESTDRIVE%
测试顺序写入带宽。
diskspd -d60 -b1M -o64 -Sh -t4 -si -w100 %TESTDRIVE%
清理一次性的 Persistent Disk 和虚拟机:
后续步骤
- 了解如何通过查看永久性磁盘性能指标来监控磁盘性能。
- 了解永久性磁盘的价格。
- 了解如何优化永久性磁盘性能。