如何对PC或服务器中的硬盘进行压力测试

你的哪个硬盘是最快的,它真的和制造商承诺的一样快吗?无论您拥有的是台式PC还是服务器,微软免费的Diskspd实用程序都会对您的硬盘驱动器进行压力测试和基准测试。

注意:本指南的前一个版本解释了使用Microsoft的旧“SQLIO”实用程序。然而,微软现在只提供“Diskspd”实用程序,它取代了SQLIO,所以我们用全新的说明更新了本指南。

为什么使用Diskspd?

如果您想了解您的驱动器的IO能力,Diskspd是一个极好的工具。Diskspd会告诉您服务器硬盘可以处理的最大容量,或为您提供在台式PC上应对繁重工作负载(或仅是要求苛刻的PC游戏)时应使用的最快硬盘。

例如,假设一台服务器上有三个驱动器:一个F驱动器、一个G驱动器和一个C驱动器。如果我们在F驱动器上有MDF,在G驱动器上有LDF,在C驱动器上有操作系统,我们就可以评估我们的设置是否有效。例如,如果MDF文件是读取和写入最多的最繁忙的文件,我们希望它位于最快的驱动器上。

使用上面的示例和图表(表示操作系统、LDF和MDF的写入和读取),我们会将MDF文件放在最快的驱动器上,因为我们的MDF是最忙的。如果我们的Diskspd分析显示F是我们最快的驱动器,我们会将MDF文件放在驱动器F上。

从哪里下载Diskspd

微软免费提供这个优秀的工具,您可以从Microsoft TechNet下载。它甚至是开源的,所以你可以从GitHub下载并检查或修改源代码。

Diskspd已经过测试,可以在桌面版本的Windows 7、8、8.1、10以及Windows Server 2012、2012 R2和2016年技术预览版5上运行。

下载后,您需要将.zip文件的内容解压缩到计算机上的某个文件夹中。请注意,存档包含三个不同的“diskspd.exe”文件。“amd64fre”文件夹中的一个用于64位Windows PC,而“x86fre”文件夹中的一个用于32位Windows PC。如果您使用的是64位版本的Windows,那么您可能希望使用64位版本。

如何执行压力测试?

要执行单个测试,只需从启用管理员的命令提示符调用Diskspd命令即可。在Windows 10或8.1上,右键单击开始按钮,然后选择“命令提示符(管理员)”。在Windows 7上,在开始菜单中找到“命令提示符”快捷方式,右键单击,然后选择“以管理员身份运行”。

首先,使用CD切换到包含要使用的Diskspd.exe的目录:

cd c:\path\to\diskspd\amd64fre

在我们的示例中,这看起来像下面的命令。

现在,使用要使用的选项运行Diskspd命令。您可以在下载的Diskspd存档中包含的30页DiskSpd_Documentation.pdf文件中找到命令行选项和用法信息的完整列表。

但是,如果您希望快速启动和运行,这里有一个命令示例。以下命令将数据块大小设置为16K(-b16K),运行30秒测试(-d30),禁用硬件和软件缓存(-Sh),测量延迟统计信息(-L),每个线程使用两个IO请求(-O2),每个目标使用四个线程(-t4),使用随机访问而不是顺序写入(-r),执行30%的写入操作和70%的读取操作(-w30)。

它在c:\testfile.dat中创建一个大小为50MB(-c50m)的文件。例如,如果您想对D:驱动器进行基准测试,则可以指定d:\testfile.dat

Diskspd.exe -b16K -d90 -Sh -L -o2 -t4 -r -w30 -c50M c:\testfile.dat

无论您在上面的测试中指定了多长时间(30秒),所有测试结果都将打印到命令提示符中,您可以查看它们。

查看结果,您将看到测试期间驱动器达到的平均MB/s-每秒执行了多少次写入操作,每秒执行了多少次读取操作,以及每秒的输入/输出(IO)操作总数。这些统计数据在比较多个驱动器以确定特定操作哪个更快时非常有用,但它们也会告诉您一个硬盘驱动器可以处理多少IO。

您还可以将结果转储到文本文件中,稍后可以使用>操作符查看。例如,下面的命令运行与上面相同的命令,并将结果放在C:\testresult txt文件中。

Diskspd.exe -b16K -d90 -Sh -L -o2 -t4 -r -w30 -c50M c:\testfile.dat > c:\testresults.txt

对您的其他驱动器重复此过程,然后进行比较。

自定义压力测试命令

如果您正在尝试找出对于某个工作负载来说哪个硬盘驱动器最快,那么您应该创建一个与该工作负载最匹配的命令。例如,如果是一台只读不写的服务器,应该执行100%读测试,不测量任何写性能。在多个驱动器上运行压力测试,并比较结果,看看哪种类型的工作速度更快。

请注意,您可以为Diskspd.exe指定许多其他命令行选项。您可以在下载的Diskspd.exe文件本身附带的文档中找到最完整的最新列表,但以下是一些重要选项:

-w表示写入和读取操作的百分比。例如,输入-w40将执行40%的写入操作,从而执行60%的读取操作。输入-w100将执行100%写入操作。省略-w开关或输入-w0将执行0%的写入操作,从而执行100%的读取操作。 -r或-s确定测试是使用随机访问还是顺序操作。指定-r表示随机访问,指定-s表示顺序访问。这可以帮助您测试随机文件访问(通常是一堆小文件)或顺序文件访问(通常是一次读取或写入一个大文件)。 -t表示将同时运行的线程数,例如,-t2表示两个线程,-t6表示六个线程。 -o表示每个线程的未完成请求数,例如,-o4表示四个请求,-o2表示两个结果。 -d是以秒为单位的测试持续时间,例如-d90表示90秒或-d120表示120秒。 -b是读取或写入的块大小,例如-b16K表示16K块大小或-b64K表示64K块大小。

使用这些选项,您可以调整Benchmark命令以查看磁盘在不同负载下的性能。一旦您编写了一个命令,让您感觉与您在PC上执行的工作负载类型接近,您就可以对几个驱动器进行压力测试,看看哪个性能最好。

相关文章