当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

作者:精品下载站 日期:2024-12-14 20:05:03 浏览:14 分类:玩电脑

如何测量 Windows 上的存储性能和 IOPS?


可以估计现有或设计的存储系统性能的主要指标之一是IOPS每秒输入/输出操作)。简单来说,IOPS 是单位时间内存储、磁盘或文件系统的读/写操作数。该数字越大,存储的性能就越高(坦率地说,IOPS 值必须与其他存储性能特征(例如延迟、吞吐量等)一起考虑)。

在本文中,我们将介绍在 Windows 中测量存储性能(IOPS、延迟、吞吐量)的几种方法(您可以将本手册用于本地硬盘驱动器、SSD、SMB 网络文件夹、CSV 卷或 SAN/iSCSI 存储上的 LUN)。

在 Windows 中使用磁盘性能计数器捕获存储 I/O

您可以使用性能监视器中的内置磁盘性能计数器粗略估计Windows中当前的存储I/O工作负载。要收集这些计数器数据:

  1. 启动Perfmon;

  2. 创建新的数据收集器集并选择手动创建

    [玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

  3. 选中复选框创建数据日志 -> 性能计数器

    [玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

  4. 现在,在新数据收集集的属性中,为物理磁盘对象添加以下性能计数器(您可以选择特定磁盘或所有可用本地磁盘的计数器):

    • 平均。磁盘秒/传输

  5. 平均。磁盘队列长度

  6. 平均磁盘字节/传输

  7. 磁盘字节/秒

  8. 磁盘传输/秒

  9. 分割 IO/秒

  10. 您可以更改其他数据收集属性。默认情况下,每 15 秒收集一次计数器值。

    要显示实时磁盘性能,您需要在监控工具->性能监视器部分添加指定的Perfmon计数器。

    [玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

  11. 仍然需要开始收集性能计数器数据(选择开始)并等待收集足够的信息进行分析。之后,右键单击您的数据收集器集并选择停止

    [玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

  12. 要查看收集的性能数据,请转至Perfmon -> Reports -> User Defined -> Data_Disk_IO —> check_the_last_set。默认情况下,磁盘数据以图表的形式显示;

  13. 使用 Ctrl + G 切换到报告模式。

    [玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

如何理解Perfmon收集的存储性能计数器?为了快速分析磁盘/存储性能,您需要查看至少以下 5 个计数器的值。

在分析计数器数据时,建议您了解当前物理磁盘(存储)配置(是否使用 RAID 或 Stripe、磁盘数量和类型、缓存大小等)。

  • 磁盘秒/传输 - 使用存储设备或磁盘执行一次写入/读取操作所需的时间(磁盘延迟)。如果延迟超过25毫秒(0.25),则磁盘阵列无法按时处理I/O操作。对于高负载服务器,磁盘延迟值不应超过10毫秒(0.1);

  • 磁盘传输/秒 - (IOPS)。每秒读/写操作的数量。这是磁盘访问强度的主要指标(文末列出了不同磁盘类型的大概IOPS值);

  • 磁盘字节/秒 - 每秒总磁盘吞吐量(读+写)。最大值取决于磁盘类型(常规 HDD 磁盘为 150-250 Mb/s,SSD 为 500-10000);

  • Split IO/sec - 当操作系统必须将一个 I/O 操作拆分为多个磁盘请求时的磁盘碎片指示器。它还可能表明应用程序请求的数据块太大,无法在一次操作中传输;

  • 平均。磁盘队列长度 - 排队的读/写请求的平均数量。对于单个磁盘,队列长度不应超过2。对于4块磁盘的RAID阵列,磁盘队列长度的阈值为8。

DiskSpd:在 Windows 中测试磁盘性能和 IOPS

Microsoft 建议使用 DiskSpd (https://aka.ms/diskspd) 实用程序在磁盘(存储)系统上生成负载并测量其性能。这是一个命令行界面工具,可以在多个线程中对指定的驱动目标执行 I/O 操作。我经常使用 DiskSpd 来测量存储性能,并从特定服务器获取最大可用读/写速度和 IOPS(当然您也可以测量存储的性能,在这种情况下,diskspd 将用于生成存储负载)。

DiskSpd 不需要安装,只需下载存档并将其解压到本地磁盘即可。对于 x64 位系统,请使用 amd64fre 目录中的 diskspd.exe 版本。

我使用以下命令来测试磁盘的性能:

diskspd.exe -c50G -d300 -r -w40 -t8 -o32 -b64K -Sh -L E:\diskpsdtmp.dat > DiskSpeedResults.txt

重要。使用diskspd.exe时,测试系统的磁盘和CPU上会产生相当大的负载。为了消除用户的性能下降,不建议在高峰时段在生产系统上启动它。

[玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

  • -c50G

    - 文件大小 50 GB(最好使用较大的文件大小,以便它不适合存储控制器的缓存);

  • -d300

    - 测试持续时间(以秒为单位);

  • -r

    - 随机读/写操作(如果需要测试顺序访问,请使用-s);

  • -t8

    - 线程数;

  • -w40

    - 写入与读取操作的比率40%/60%;

  • -o32

    ——队列长度;

  • -b64K

    ——块大小;

  • -Sh

    — 不使用缓存;

  • -L

    — 测量延迟;

  • E:\diskpsdtmp.dat

    - 测试文件路径。

压力测试完成后,可以从输出表中获得平均存储性能值。

在我的测试中,获得了以下性能数据(查看Total IO表):

  • MiB/s — 241(大约 252 Mb/s,不错);

  • IOPS — 3866(非常好!);

  • 平均延迟 — 66.206 毫秒(相当大的延迟!)。

[玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

您可以获取读取(读取 IO 部分)或写入(写入 IO 部分)操作的单独值。

使用 diskspd 测试了多个磁盘或存储 LUN 后,您可以对它们进行比较或选择具有任务所需性能的阵列。

如何使用 PowerShell 测量存储 IOPS、吞吐量和延迟?

我找到了一个 PowerShell 脚本(由 Microsoft MVP Mikael Nystrom 编写),它本质上是 SQLIO.exe 实用程序(一组文件存储性能测试)的附加组件。

注意。 2015年12月,微软宣布终止对该工具的支持,并用更通用的工具Diskspd取代SQLIO,并从其网站上删除了SQLIO分发文件。因此,您必须自己搜索 sqlio.exe,或者从我们的网站下载它(它位于包含 PowerShell 脚本的存档中)。

因此,下载包含 2 个文件的存档:SQLIO.exeDiskPerformance.ps1 (disk_perf_iops.ZIP - 74 KB) 并将其解压到任意文件夹。

[玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

运行 PowerShell 脚本来估计磁盘性能和 IOPS 的示例:

.\DiskPerformance.ps1 -TestFileName test.dat -TestFileSizeInGB 1 -TestFilepath C:\temp -TestMode Get-LargeIO -FastMode True -RemoveTestFile True -OutputFormat Out-GridView

[玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

让我们考虑一下脚本参数:

  • -TestFileName test.dat

    - FSUTIL 工具创建的文件的名称;

  • -TestFileSizeInGB 1

    - 测试文件大小。可能的值为 1.5、10、50、100、500、1,000 GB。文件大小必须大于存储系统缓存的大小。否则,IOPS将针对缓存数据进行测量,而不是磁盘;

  • -TestFilepath C:\Temp

    - 此处指定要测量性能的磁盘以及磁盘上的文件夹,将在其中创建测试文件。您还可以指定网络共享文件夹 (SMB) 的 UNC 路径;

  • -TestMode Get-LargeIO

    - 输入输出测量有两种选择。 Get-SmallIO 允许测量 IOPS,Get-LargeIO 测量数据传输速率。 SmallIO 和 LargeIO 参数的区别在于测量速率时的块大小为 8 KB 和 512 KB,以及相应的访问类型(随机或顺序);

  • -FastMode True

    - 在Fast模式下,每个测试运行10秒,否则需要60秒;

  • -RemoveTestFile True

    - 测试结束后删除测试文件;

  • -OutputFormat Out-GridView

    - 测试结果可以显示在 PowerShell 控制台 (Format-Table) 或单独的图形图表窗口 (Out-Gridview) 中。

[玩转系统] 如何测量 Windows 上的存储性能和 IOPS?

在我们的案例中(使用通过 SAN 连接的 HP MSA 2040 上的 VMFS 数据存储上的 vmdk 虚拟磁盘),磁盘阵列显示的平均 IOPS 值约为 15,000,数据传输速率(吞吐量)约为 5 Gbit/s

下表显示了不同磁盘类型的近似 IOPS 值:

TypeIOPSSSD(SLC)6000SSD(MLC)100015K RPM175-20010K RPM125-1507.2K RPM50-75Raid5 of 6 drives with 10K RPM1000

我发现了一些针对一些流行的 Microsoft 服务的 IOPS 磁盘性能建议:

  1. Microsoft Exchange 2010 有 5,000 个用户,每个用户每天接收 75 封电子邮件并发送 30 封电子邮件,将需要至少 3,750 IOPS;

  2. Microsoft SQL 2008 Server每秒处理 3,500 个 SQL 事务 (TPS),需要 28,000 IOPS;

  3. 用于 10-100 个用户的通用 Windows 应用程序服务器需要 10-40 IOPS。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯