ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Windows磁盘性能测试:diskspd参数详解与IOPS、延迟实战解读

Windows磁盘性能测试:diskspd参数详解与IOPS、延迟实战解读 1. 先从一次“被质疑”的测试说起大概两年前我帮客户做一批Windows Server服务器的存储验收。交付前对方技术负责人直接在群里抛了个截图——CrystalDiskMark跑出来的顺序读速度5个G每秒。客户一看说这机器存储性能这么好是不是不用上全闪阵列了我当场就摇头。CDM那种图形化工具颗粒度太粗默认队列深度低、单线程多测的是“单用户随手拷贝文件”的体验根本压不出存储的真实上限。更关键的是CDM对很多参数是隐藏的、不可控的写进去多少数据、缓存策略怎么设置、并发模型长什么样全是一笔糊涂账。在存储验收、数据库迁移评估、云主机规格选型这种正经场景里客户一旦较真你得拿出能复现、能解释、能对标的测试方法。我当时用的就是微软官方的diskspd命令行工具绿色免安装单文件就能跑。它能精确控制IO大小、并发数、读写比例、队列深度、测试时长甚至能决定绕不绕过缓存。那次验收最后就是我现场敲了几条diskspd命令把不同块大小、不同并发下的IOPS和延迟打出来客户那边从质疑变成点头。今天这篇文章我不打算把diskspd的所有参数念一遍官方文档那样没意思。我按自己实际使用的场景来拆讲清楚每个关键参数背后的道理再给一整套可以直接抄作业的测试命令和结果判读方法。适合谁来读如果你是做服务器运维、存储售前售后、数据库管理员或者你手里刚好有一台Windows服务器/云主机想知道它磁盘到底行不行这篇文章能帮你省至少两三天自己摸索的时间。哪怕你从没接触过命令行按着步骤走也能跑完一次完整测试。2. 为什么是diskspd而不是其他工具先说说工具选型。市面上磁盘性能测试工具不少Windows生态里常见的就这几类CrystalDiskMark图形界面操作简单适合个人电脑快速看看磁盘水平。问题在于参数控制太弱队列深度和线程数是固定的组合而且默认会用缓存测出来的往往是“最优情况”跟真实压力场景差得远。ATTO Disk Benchmark主要用于测试不同块大小下的传输速率适合移动硬盘U盘之类的外设但不适合模拟服务器负载。hdparm、fioLinux生态的王者尤其fio是行业标准但fio在Windows上跑需要装Cygwin或者WSL部署麻烦而且权限和磁盘访问方式跟原生工具不同结果有时会受虚拟化层影响。diskspd微软官方出品前身是SQLIO专为Windows存储栈设计。单EXE文件双击能用管理员权限下可以直接对物理磁盘、分区、裸设备发起测试。最关键的是它可以精细控制每一个影响存储性能的变量IO大小、随机/顺序、读写比例、线程数、并发IO数、测试时长、是否禁用缓存。这意味着你做出来的测试结果是可以解释的——万一测出来性能不对你能定位是磁盘慢、还是缓存策略问题、还是控制器瓶颈。我个人的选择标准很简单工具一定要能还原“我要验证什么”这个假设。如果你只是在选一台笔记本CrystalDiskMark足够如果你是给业务系统做容量规划和架构选型diskspd几乎是Windows平台唯一靠谱的免费工具。另外说一句diskspd是开源软件微软官方博客有下载链接Github上也能拿到源码。它支持的系统范围很广从Windows Server 2008 R2到Server 2022都能跑Windows 10/11桌面系统也没问题。当年在Win7上做测试我也用过兼容性至今没出过幺蛾子。2.1 diskspd能测什么一句话它通过模拟不同特征的IO负载把存储系统在特定条件下的性能边界暴露给你。具体能测的维度包括IOPS每秒输入输出次数核心指标尤其对数据库这种高并发小IO场景比带宽更关键。吞吐量MB/s顺序读写大文件的速率视频编辑、大数据导入这类场景看它。延迟平均延迟/最大延迟存储对每一次IO请求的响应时间混合在IOPS里看才有意义。队列深度的体现队列越深存储越能发挥并行能力但延迟也会涨diskspd能直观反映这个trade-off。2.2 什么时候用diskspd不是说所有场景都需要上diskspd。我个人只在下面几类情况用存储设备验收或故障排查时需要精确指标作为结论依据。对比不同磁盘、不同RAID级别、不同存储池方案的性能差异。数据库或虚拟化平台的存储选型需要模拟真实负载曲线。云主机磁盘规格选型比如云盘A标称IOPS 5000到底能不能达到拿diskspd压一下就知道。如果你只是想知道笔记本换固态后“快了多少”用CDM更省事别拿大炮打蚊子。3. 核心参数入门每个参数到底动了什么diskspd是一条命令行工具而命令行的优势就是参数可组合。下面我按“测试一个磁盘要关心哪些因素”这条线索把最核心的参数一个个掰开讲。先给一条最基础的命令做骨架diskspd.exe -d 60 -w 0 -t 2 -o 4 -b 4K -r -p 10 E:\testfile.dat这条命令的意思是对E盘根目录下一个名为testfile.dat的测试文件连续测60秒纯读2线程每线程4个未完成IO块大小4KB随机IO模式每次IO完成后的等待时间是10毫秒。但这只是皮毛。真正用得顺得理解每个参数背后的逻辑和应用场景。下表是我整理的速查后面逐条展开参数作用典型值适用场景-w写百分比0 / 100 / 30纯读、纯写、混合读写-b块大小4K / 8K / 1M数据库随机小IO / 大文件顺序读写-t线程数1 ~ 32模拟多用户并发访问-o未完成IO数1 ~ 32控制并发深度-r / -s随机/顺序——随机IOPS / 顺序带宽-d测试时长30 ~ 300秒短测 / 稳定态长测-Sh禁用软件缓存默认开启绕不绕过Windows缓存-F8禁用Windows写缓存刷新默认关闭测试裸盘写性能-p每个IO后暂停0 ~ 20模拟操作间的时间间隔-L输出延迟统计可选定位延迟分布3.1 先从“-w”理解读写混合的意义-w参数后面接的是写操作所占百分比。-w 0就是纯读-w 100就是纯写-w 30就是70%读30%写。生产环境很少有纯读或纯写的场景大部分业务都是读写混合比如数据库事务日志写多读少邮件系统读多写少。很多人忽略的一个点混合读写测试时读写比例只是基准它不代表你想要的最终性能一定落在某个确定值上。因为写操作会触发缓存刷盘、磁盘寻道竞争、控制器排队实际表现会受很多因素干扰。所以做混合测试时建议把-w和-p参数搭配使用模拟出业务的IO瓜分特征。我实际的做法是先测纯读再测纯写最后测一个混合比例。纯读和纯写是边界混合值在两者之间逻辑上更容易解释得通。3.2 块大小“-b”的选择直接决定结果含义-block参数后面跟的是单次IO的数据量。这个参数是很多新手最容易弄错的。块大小和IOPS之间的关系天然是负相关的块越小单次IO耗时越短IOPS越高但总吞吐量低块越大每次IO搬运的数据多吞吐量高但IOPS会下降。怎么选块大小关键看你的业务模型。数据库的OLTP场景大量随机读写是以8KB或16KB为单位SQL Server的页大小就是8KB那就应该测8K或16K随机IOPS。视频监控、数据备份、数据仓库这类顺序大块读写场景用1MB块测带宽更合适。我自己有一个默认组合给别人做参考的时候也这么推荐4K随机读写模拟OLTP数据库的高并发小IO8K随机读写对齐SQL Server页大小1M顺序读写模拟流媒体、备份、数据迁移这里要特别提醒一句有人测4K随机IOPS却用了一台普通机械硬盘结果跑出来吓人一跳——IOPS只有一百多然后来问是不是盘坏了。朋友那是机械硬盘的正常水平。4K随机IOPS这个指标是给SSD、NVMe和存储阵列看的。测试之前先确认你的存储类型和业务预期否则你会被结果带偏。3.3 线程数“-t”与并发IO数“-o”才是模拟并发的关键-t后面是线程数-o是每个线程允许同时未完成的IO数量。两者相乘就是系统里同时进行中的IO总数也就是通常说的队列入队深度queue depth。举个例子-t 4 -o 8就代表4个线程每个线程最多8个IO在飞行整个测试的总深度就是32。这个数字越大存储设备需要同时处理的命令越多越能压出硬件在多队列并行时的性能上限。但这里有一个容易踩的坑如果你在测试一台普通办公电脑上的SATA SSD把深度调到32或64大概率测出来的IOPS比深度1高好几倍但这不代表你的实际应用会跑到这个水平。因为普通桌面应用的单线程队列深度很浅深队列测出来的数据只代表“这块盘在极端并行下支持多少IOPS”不代表“日常用起来就有这么快”。那怎么选服务器场景尤其数据库和虚拟化平台建议深度在16到32之间模拟的是高并发生产负载。桌面级应用测试深度4就够了太高没有参考意义。这里也顺带解释一个行业共识SSD的标称IOPS厂商测出来的指标通常是在深度32甚至更高的情况下得到的所以拿到标称值别急着信先看清楚它的测试条件。3.4 随机“-r”与顺序“-s”两种完全不同的磁盘压力模型-r表示随机-s表示顺序。这个很好理解但要说清楚的是它们背后对应的工作负载差异。顺序IO是磁盘最舒服的工作方式。不管是机械盘还是固态盘顺序读写时磁头/闪存可以连续搬运数据吞吐量可以跑到很高。随机IO则是让存储“四处出击”每次IO都要寻道机械盘或处理不同页面的映射SSD性能会明显下滑。测试场景上要遵循这样的逻辑如果你准备部署一个数据库除了要测随机IOPS也务必测一下顺序读写——因为数据库的备份恢复、索引重建就是典型的顺序大IO。很多人在评估存储时只看随机性能结果上线后发现数据库备份恢复特别慢就是因为顺序读写能力被忽略了。3.5 测试时长“-d”短测看峰值长测看稳定-d后面跟秒数。市面上一些便携工具比如CDM默认只测1到3秒这个时间太短存储的缓存不管是SSD内部的SLC缓存、RAID卡的缓存还是系统内存缓存都还没被耗尽测出来的结果是打了肾上腺素的最优成绩。拿这个数据去做容量规划十个有八个得出事。diskspd的好处就是时长自定义。我自己的习惯快速摸底-d 10到30秒能看个大概但结果只能作为参考。标准测试-d 60秒以上等到缓存耗尽、磁盘进入稳态后取数据这样更接近真实生产。深度压测-d 300到600秒适合存储上线前的验收重点观察长时间运行后性能是否衰减以及延迟是否出现“长尾巴”个别请求响应时间成百上千毫秒。长测的结果怎么看diskspd默认输出的是整个测试过程的平均表现。但我建议打开-l参数把每个时间间隔的数据都打出来然后单独看后半段的数据。因为前半段有缓存红利后半段才是存储的常态。这个细节是很多文档都不会告诉你的。3.6 缓存相关的参数-Sh、-F8这两个参数是diskspd最容易被忽视、但只要理解了就非常有用的功能。-S参数控制是否禁用软件的写入缓存Software Cache。默认情况下Windows会把写操作先缓存到内存中再批量刷到磁盘。禁用后写IO直接穿透到磁盘介质测出来的是存储裸写能力。-Sh则是在这个基础上连系统的软件缓存也一并绕过。注意是大写的S加小写的h我第一次用的时候输错过好多次后来干脆把这条命令固定成模板。-F8的作用更直接——它允许/禁止在测试时发送写缓存刷新指令Flush。很多RAID卡和SSD硬件层面有写缓存如果不禁用flush每次IO可能都要等待数据真正落盘性能数字会很低。反过来如果要做“掉电不丢数据”这种一致性要求高的场景flush反而是必须保留的。所以测试之前先问自己一个问题我要验证的是“存储设备本身的极限性能”还是“当前系统配置下用户实际能拿到的性能”如果要的是前者-Sh -F8打开把缓存、flush的影响全部屏蔽。如果要的是后者保持默认让系统缓存、驱动器缓存都参与工作测出来的是用户真实感知。这两个参数的取舍说到底就是“测硬件”和“测系统”的区别。做存储验收、选型评估建议都跑一遍一组是绕过缓存的裸性能另一组是不动缓存的实际性能。两组数据加起来才是对一个存储系统的完整画像。4. 实操场景拆解五套可以直接复制的命令理论讲完上真家伙。我把自己平常最常用的几套diskspd测试命令贴出来每条都带上管道符和目标文件的说明。你复制过去把盘符换成你自己的就能直接跑。4.1 场景一评估一块盘/一个分区的顺序读带宽这是最基本的摸底。要确认一台服务器读大文件的极限速率或者对比两块盘的顺序读能力用这条diskspd.exe -d 60 -w 0 -s -b 1M -t 4 -o 4 -Sh -F8 E:\testfile.dat-s顺序-b 1M1MB块-t 4 -o 416个并发深度模拟多线程顺序读取-w 0纯读-Sh禁用软件缓存-F8禁用写缓存刷新纯读时这个没实际影响但保留能让命令更统一输出里找“Total”那一行看MB/s那一列。一台普通SATA SSD的顺序读通常在500MB/s上下NVMe PCIe 3.0是2000到3500MB/sPCIe 4.0要到5000甚至7000MB/s。机械盘组RAID的话看阵列卡和盘数一般几百MB/s到头了。如果你的结果比这个低很多先确认是不是- Sh没生效可能导致系统缓存介入或者文件太小缓存红利没被冲掉。4.2 场景二模拟OLTP数据库的4K随机IOPS这是使用频率最高的一条命令。数据库的OLTP负载核心指标就是4K/8K随机读写的IOPS和延迟。diskspd.exe -d 120 -W 0 -w 100 -r -b 8K -t 8 -o 8 -Sh E:\testfile.dat这里我用的是8K对齐SQL Server默认页大小。如果你的数据库是Oracle或者MySQL用4K或者16K都行看你的数据文件块大小。-w 100表示纯写。数据库的日志写入就是这个特征。但生产上往往读写混合我把纯写和纯读都各跑一次再看混合。纯读就是改成diskspd.exe -d 120 -w 0 -r -b 8K -t 8 -o 8 -Sh E:\testfile.dat然后看IOPS和平均延迟。这里有个经验值普通机械盘RAID10的8K随机IOPS大约在几百到一千多SATA SSD大概一两万NVMe企业盘能到十万甚至更高。延迟方面机械盘平均能在10到20毫秒就算不错SSD应该在0.1到1毫秒之间。如果你的结果低得离谱先查看是不是没有禁用缓存测试数据可能被系统缓存“吞”了。提示新SSD或存储阵列首次写入可能会触发垃圾回收或磨损均衡前几分钟性能会明显波动。如果要做严谨的对比测试记得先做一轮预处理比如连续写满再清空让存储进入稳态后再测。4.3 场景三混合读写测试贴近真实业务数据库不可能只有读或只有写所以混合测试才能暴露更多问题。这条模拟的是70%读30%写的OLTP负载diskspd.exe -d 120 -W 30 -w 70 -r -b 8K -t 8 -o 8 -Sh E:\testfile.dat-W 30的意思是写占30%读占70%注意这里是-W大写。所以-w是写百分比-W是读百分比两者加起来等于100就行。如果你写-W 30那-w就不需要再填别的值了吗不是必须两个参数同时写清楚系统才能识别。这个规定有点反直觉我第一次用也栽在这。正确写法就是上面这条-W 30 -w 70两个都要写。混合测试后的数据怎么解读有两个点值得关注一是IOPS会不会比纯读明显下滑二是平均写延迟有没有飙升。混合负载里写IO会触发底层的读改写如果块没有对齐性能下滑是正常的但如果下滑超过50%就要查一下是不是磁盘碎片化严重、RAID的写惩罚太高或者控制器固件太老。4.4 场景四多线程并发压测模拟虚拟化平台虚拟化宿主机下面跑了几十台虚拟机每台都在产生IO这种场景需要更高的并发深度。我用这条来压diskspd.exe -d 180 -t 16 -o 16 -r -b 4K -w 100 -Sh E:\testfile.dat这条测试的总深度达到了25616×16。说实话这种深度对机械盘来说已经有些“虐待”了但对SSD和全闪阵列来说只是一种常规负载。跑完重点看最大延迟Max Latency。如果最大延迟动辄超过100毫秒说明存储扛不住这个并发压力虚拟机可能出现IO等待进而CPU Ready值升高业务卡顿。虚拟化环境的存储测试我一般还会加跑一个顺带场景把总深度设成不同档位16/64/128/256各跑一次观察IOPS是不是线性增长。如果深度32到64增长明显128以后增长停滞甚至还下降说明存储的控制器或网络链路已经到瓶颈了这时候继续堆虚拟机数量只会恶化延迟。4.5 场景五用文件还是裸盘两种模式的取舍前面几条命令都是对文件测试。diskspd也支持对裸设备测试比如直接测一块没有格式化/没有盘符的物理磁盘diskspd.exe -d 60 -w 0 -r -b 4K -t 4 -o 8 -Sh \\.\PhysicalDrive1\.\PhysicalDrive1表示第一块物理盘注意序号从0开始。别写错了盘符导致把重要数据覆盖。裸盘测试和文件测试的区别文件测试会经过文件系统层NTFS/ReFS包括文件系统的元数据、缓存、锁等裸盘测试直接绕过文件系统测的是最底层的存储设备能力。两者结果的差异有时候能帮你定位瓶颈在哪个环节——如果文件测试远低于裸盘测试瓶颈很可能在文件系统或驱动层如果两者相差不大瓶颈在物理设备。对新手来说优先用文件测试就够了。裸盘测试适合老手做深度诊断而且务必确认盘符是你要测的那块否则后果自负——我见过一次同事把业务盘裸测覆盖了整个分区的案例硬盘灯狂闪然后就没有然后了。5. 结果解读IOPS、延迟和那条“Total”行到底在说什么跑完diskspd屏幕上一堆数字很多人直接懵了。我教你按三步看结果不需要懂全部内容抓重点即可。5.1 先看测试配置有没有生效输出最前面会列出本次测试的参数包括目标文件、块大小、线程数、冷却时间、读写比例、随机还是顺序。你要做的第一件事是确认这些配置跟你敲的命令一致。尤其是-S (禁用软件缓存)、-F8 (禁用写缓存刷新)有没有被正确识别。如果设置没生效后面所有数据都是假的。我遇到过一种情况系统目录权限不足diskspd没拿到管理员权限结果命令里的“禁用缓存”选项变成了无效状态跑出来的数据异常漂亮差点误导了存储选型。后来在输出头里核对才发现参数没生效。所以务必用管理员身份运行命令行然后再执行diskspd。5.2 读Total那一行输出结果中间会有一大片分时数据最后汇总成几个Total。核心看这几个值IOPS总IO次数除以时长MB/s每秒传输的兆字节数平均延迟Avg Latency所有IO的平均响应时间最大延迟Max Latency最慢的那次IO用了多久判读优先级先看IOPS和平均延迟是否匹配业务预期再看最大延迟是否出现“尖刺”。如果平均延迟正常但最大延迟很高比如平均1毫秒最大3000毫秒说明存储偶尔会卡一下这很可能对事务类业务造成可感知的抖动。这种“长尾巴”问题在加缓存、做限流、调整队列深度这几个方向上都可以缓解。5.3 别只看平均值把分布拉开看diskspd的-l参数会把每个时间片的性能打出来格式是CSV。你可以重定向到文件里用Excel或者Python画个趋势图diskspd.exe -d 300 -w 0 -r -b 8K -t 8 -o 8 -Sh -l E:\testfile.dat result.csv打开result.csv重点看每秒钟的IOPS和延迟的变化趋势。如果IOPS在前期高、后期断崖式下跌再慢慢恢复那就是缓存耗尽后的真实性能暴露或者垃圾回收的周期性影响。这种数据和平均值配合着看对存储选型特别有价值。5.4 IOPS和延迟的最佳平衡点这里给你一个我积累下来的工程经验不同存储类型有大致合理的IOPS/延迟范围超了要怀疑测试条件远远达不到也要怀疑硬件状态或配置问题。存储类型8K随机读IOPS深度16平均延迟读最大延迟读普通机械盘100~2008~20毫秒100~300毫秒机械盘RAID10300~10003~8毫秒50~200毫秒入门SATA SSD10000~300000.2~1毫秒5~50毫秒企业级NVMe SSD50000~1500000.05~0.2毫秒1~10毫秒全闪存储阵列2000000.1~0.5毫秒2~20毫秒注意这只是经验数据不代表任何产品标称值。不同厂商、不同固件版本差异很大。更重要的是如果测试条件和这张表不符别生搬硬套还是要用同条件对比来评估。6. 常见问题与排查技巧实录6.1 报错“磁盘空间不足”或“访问被拒绝”这个最常见。diskspd默认会在目标路径下创建一个测试文件大小取决于测试时长和数据量。比如测试文件默认1GB起步有些命令跑下来会创建几个GB到几十GB的文件。如果你的分区剩余空间不够就会报这个错。解决办法先df看空间或者干脆指定一个小的测试文件大小。diskspd支持通过- c参数控制测试文件的大小单位是字节。例如-c 4G就是4GB。不过不建议用太小的文件因为会被缓存命中测不出真实性能。一般建议至少2GB以上。另外“访问被拒绝”基本都是没有管理员权限。右键“命令提示符”或PowerShell选“以管理员身份运行”。6.2 测试结果异常低先怀疑缓存和文件系统有朋友跑完4K随机写IOPS只有几百发截图问是不是盘坏了。看了半天发现他的命令里没有加- Sh而且写的是文件测试。这种情况下Windows的系统缓存和文件系统日志/元数据更新都要参与进来写性能天然受影响。解决方案加-Sh参数把缓存放开或者直接用裸盘测试\.\PhysicalDriveN。一定要记住文件测试的结果是“文件系统存储”的综合表现不是纯设备性能。这个区别很关键。6.3 测试结果波动大存储可能在“后台忙”SSD在空闲时会在后台做垃圾回收、磨损均衡如果正好撞上测试时间窗口性能就会掉得很厉害。机械盘也可能因为磁盘碎片整理、SMART检测任务导致波动。我的做法是测试前先让盘“静置”5分钟再跑一轮预写填充数据让盘进入稳态然后开始正式测试。另外测试机要关闭Windows Defender实时扫描、Windows Search索引服务这些会干扰结果的后台任务。服务器上如果有备份任务、监控agent也建议临时停掉或者避开时段。6.4 输出文件打不开CSV中文乱码diskspd输出的CSV文件默认是UTF-8编码但中文Excel直接打开会乱码。两种解决办法在PowerShell里先转码再打开Get-Content result.csv | Out-File result_utf8.csv -Encoding UTF8用VS Code或Notepad这类现代编辑器打开都能正确识别UTF-8。6.5 如何对比两次测试结果做对比测试时最好把“环境变量”全部固定下来同一台机器、同一时间段、同一文件路径、同一块盘、同一组参数。唯一变量是你要做对比的东西比如换了RAID级别或者换了固件版本。我曾经对比过两块不同品牌NVMe SSD的随机写性能第一次测试A盘好第二次B盘好。排查后发现第一次测试时A盘刚跑完一轮大文件复制缓存是热的而B盘刚开完机比较凉。后来把所有盘先预热一轮相同负载再交叉测试终于得到了稳定可靠的对比结果。记住存储测试控制变量是最重要的原则。7. 测完以后数据怎么用最后说说数据到底能拿来干什么。很多人测完了一堆数字不知道怎么落地。我按用途分一下容量规划拿到某存储的稳态IOPS和延迟结合业务高峰的IOPS需求可以算出大概需要几块盘/几个节点的存储资源。比如业务峰值需要2万IOPS你测出单块SSD稳态1万IOPS那就至少需要2块盘做负载均衡。故障排查当业务变慢时跑一轮diskspd确定是存储性能不够还是应用本身的问题。如果存储性能远高于业务所需问题大概率出在应用层或网络层。架构选型在同一测试标准下对比不同存储方案的IOPS、延迟、吞吐选性价比最高的那款。这个用途下测试参数的标准化尤其重要不然两边数据不具备可比性。验收依据设备到货后按合同中规定的性能指标跑一轮diskspd确认是否达标。我经历过一次交换机固件版本不对导致存储走ISCSI链路性能减半的问题就是靠diskspd验收数据逼出来的供应商原本还嘴硬说是“网络上其他流量占用了带宽”后来放大测试流量并且加了网卡多队列对方才承认是固件bug。顺带说一句测试文件跑完要及时清理。diskspd创建的文件虽然默认会尝试删除但如果你中途按了CtrlC强制终止文件可能残留。一个几十GB的死文件落在生产分区里也不是小事。清理办法就是手动到你指定的路径下删掉那个testfile.dat。8. 个人经验diskspd自带的一个输出小技巧分享一个我自己常用的“组合拳”。diskspd的输出默认在控制台里滚动看汇总数据还算方便但要把数据归档或者汇报还是直接重定向到文件里方便。我通常在命令末尾加上重定向把完整的控制台输出保存成日志再把-l参数打开的CSV单独存一份时序列数据diskspd.exe -d 180 -w 0 -r -b 4K -t 8 -o 8 -Sh -l E:\testfile.dat D:\diskspd_result_$(Get-Date -Format yyyyMMdd_HHmmss).csv 21注意PowerShell下面用$(Get-Date...)动态生成文件名跑完自动归档时间戳也留好了。这样既不覆盖历史数据又能方便后续对比。如果是在CMD下跑就先用set d%date:~0,4%%date:~5,2%%date:~8,2%生成一个日期变量再拼进文件名稍微多一步但也不麻烦。我个人在实际操作中的体会是diskspd难的不是敲命令而是“设计测试方案”。它给你了太多自由度但你要清楚为什么要选这组参数、想验证什么假设、数据怎么解释。想明白这些diskspd才会真正成为你手里的利器而不仅仅是一个“跑分工具”。如果你也遇到什么奇怪的存储测试结果欢迎随时回头对照这篇文章的参数逻辑排查一遍——很多时候问题不出在盘上出在测试条件上。
返回列表