资讯动态

Win10自带硬盘测速工具详解:从任务管理器到winsat命令

发布时间:2026/9/19 18:48:07 来源:尧图企业网站定制
前阵子帮同事排查一台老电脑卡顿聊到系统盘是不是要挂他第一反应是下载 CrystalDiskMark。我说 Win10 本身就带测速方案不一定非要装第三方他一脸惊讶。后来我发现不少人的印象都是“Windows 10 没有自带的硬盘测速工具”。其实不是没有只是没有一个叫“硬盘测速”的绿色图标这项能力被拆散在任务管理器、资源监视器、性能监视器和命令行工具里会用的人不多但用起来完全够日常排查。这篇文章我打算把几个真正靠谱的自带方案从头到尾捋一遍包括怎么测、怎么看结果、有什么坑。适合不想装第三方软件、公司电脑没权限装软件、或者临时要判断硬盘是不是出问题的用户可以直接照着操作。下面进入正题。1. 测速前先把概念对齐顺序读写、随机读写和IOPS1.1 顺序读写和随机读写差别比你想象的大很多商家宣传硬盘速度时喜欢写“读取速度高达 3500MB/s”这个数字通常只代表“顺序读取”也就是数据连续排列时硬盘从头到尾快速读出来的能力。日常复制大文件、播放高清视频、甚至安装大型游戏时确实主要吃这种连续读写。但是打开软件、启动系统、加载游戏场景时数据散落在不同位置硬盘需要不停跳跃寻址这时候考验的是“随机读写”。随机读写的单位通常不是 MB/s而是 IOPS也就是每秒能够执行多少次读写请求。机械硬盘的连续读写速度尚可随机 IOPS 却低得可怜所以老电脑用机械盘装系统会觉得特别慢。SSD 之所以使用体验质变除了连续速度快更关键的是随机 4K 读写能力甩开了机械盘几个数量级。很多第三方测速软件会把这两类场景拆成好几项SEQ1M Q8T1、RND4K Q1T1 之类本质上就是在模拟连续大文件传输和零碎小文件读取。Win10 自带工具中任务管理器和性能监视器能看到的是“实时吞吐量”和连续读写关系更密切而 winsat 命令则分别测了顺序和随机两种模型后面会详细说。1.2 Win10自带工具到底能测到哪一档抛开第三方软件Win10 自带的能力大概可以分成“观察”和“主动测试”两类。任务管理器、资源监视器、性能监视器本质上是观察工具它们不产生压力只负责把系统真实发生的读写速度展示出来winsat 和 PowerShell 里的 Get-Counter 就能主动触发或记录数据其中 winsat 是最接近“跑分”的原生工具。自带工具/方法类型能测到什么局限任务管理器观察当前实时读写速度、活动时间需要自己制造负载看到的是瞬时值资源监视器观察按进程查看磁盘读写速率不能自动加压只能看正在发生的流量性能监视器观察长时间记录读写速率、队列长度配置门槛比前两者高一点winsat disk主动测试顺序/随机读写速度及评分输出对小白不太友好Get-Counter观察/脚本通过命令行读取计数器值需要写一点 PowerShell我自己在实际排查里比较常用的组合是先用任务管理器快速瞄一眼再用 winsat 做一次主动测试如果还想记录某个时间段内的波动就上性能监视器。这套流程完全不需要安装任何东西排查速度也不慢。2. 任务管理器资源监视器最快看到“当前速度”的两种姿势2.1 任务管理器先看实时速度再判断异常按 Ctrl Shift Esc 打开任务管理器切到“性能”选项卡左侧选择“磁盘”右侧就能看到实时的“读取速度”和“写入速度”单位是 MB/s旁边还有一张实时变化的曲线图。这里需要澄清一个误区任务管理器打开的瞬间磁盘读写速度通常很低因为系统在空闲状态下不会有什么大流量。所以这一步只能回答“现在有没有异常大量读写”回答不了“这块硬盘极限能跑多快”。想探到上限你得自己制造负载。最朴素的方法是准备一个大文件从一个分区复制到另一个分区。比如在 D 盘放一个 5GB 的压缩包复制到 E 盘复制过程中任务管理器里的写入速度会瞬间拉高。如果是连续大文件读和写都会接近该盘能跑到的中高水平。有一点要注意两个分区如果物理上其实是同一块硬盘那么读和写会互相抢带宽如果目标盘是另一块不同的硬盘则读速度看源盘写速度看目标盘结果参考性更强。2.2 资源监视器按进程看谁在读写任务管理器只能告诉我们整块盘的读写速度但进一步定位“到底是什么程序在读写”时资源监视器更好用。用 Win R 输入 resmon 回车切到“磁盘”选项卡可以看到每个进程的“读取”“写入”“磁盘活动时间”列。点一下“读取”或“写入”排序列读写量最大的进程就会排到最上面。这在电脑突然卡死、硬盘指示灯狂闪的时候特别有价值。很多用户遇到磁盘占用率 100% 的经典问题靠资源监视器一眼就能揪出是 Windows Search、SysMain 还是某个后台下载进程在捣乱。不过资源监视器同样不会主动加压。它只是把任务管理器里那种全局速度拆成了“按进程”的视角。如果要做一次有压力的测速还是得靠自己复制文件或者直接跳到后面的 winsat 命令。这里我习惯的操作是先打开资源监视器保持磁盘页面可见再开始复制大文件这样既能看整盘速度又能看到实际跑出速度的进程是哪一个。2.3 我自己常用的快速判定技巧不同硬盘的性能差异很大看一眼数字前最好先明确自己这块盘的接口类型。SATA 接口的 SSD好一点的连续读取也就 550MB/s 左右NVMe SSD 顺序读取通常能到 2000MB/s 以上机械硬盘则普遍在 150MB/s 上下浮动。如果你用的是 NVMe 盘复制大文件时发现速度只有几十 MB/s先别急着怀疑全是硬盘问题还要考虑是不是在两块 HDD 之间复制或者源盘本身就是瓶颈。另外复制同一个分区内的文件时要小心系统会做很多内部优化速度可能虚高也可能因为同时读写同一块物理盘而下降。想看图个大概没问题想得到精确值建议跨物理盘复制或者直接用 winsat。3. 性能监视器perfmon让Windows把磁盘速度记成流水账3.1 添加PhysicalDisk计数器的具体步骤任务管理器适合看一眼但如果你需要记录“这块盘在半小时里到底跑到过多少峰值速度”就需要用性能监视器。操作路径是Win R 输入 perfmon 回车左侧展开“监视工具”点“性能监视器”右侧默认会显示处理器时间计数器。在右侧图表上单击右键选择“添加计数器”。弹出的窗口里从“从计算机选择计数器”列表中找到“PhysicalDisk”展开它选中“Disk Read Bytes/sec”“Disk Write Bytes/sec”甚至可以把“Disk Transfers/sec”也加上。下方“选定对象的实例”里选择要监视的具体磁盘比如 0 C: 和 1 D:。之后点击添加确定图表上就会出现两条不同颜色的曲线。这里有个常见的坑“PhysicalDisk”和“LogicalDisk”分别对应物理磁盘和分区逻辑卷对普通用户来说看 PhysicalDisk 就够了。如果你想看某个具体分区的读写也可以切到 LogicalDisk但实例名称会更碎容易看花眼。3.2 这些计数器到底在说什么“Disk Read Bytes/sec”和“Disk Write Bytes/sec”的单位是字节每秒除以 1024 再除以 1024 就是 MB/s。它们和任务管理器的读者数值本质是同一来源但性能监视器能让你在更长的时间窗口里观察变化曲线还能看到历史峰值。我会额外添加一个“Current Disk Queue Length”当前磁盘队列长度。这个值可以通俗理解为“排队等待硬盘处理的请求数”。机械硬盘的队列长度一旦长期大于 2说明硬盘已经忙不过来了。SSD 虽然并发能力强但在压力很大的时候队列长度同样会明显抬升。正常情况下队列长度起起伏伏是正常的如果长时间顶在很高的位置同时速度还上不去基本可以判断硬盘或者读写链路存在瓶颈。3.3 数据收集器集更专业的记录方式如果你的需求不是盯着曲线看而是想隔一段时间来看历史数据可以在性能监视器左侧右键点击“数据收集器集”下的“用户定义”选择“新建”并输入名称然后选择“手动创建”添加性能计数器设置采样间隔比如每 10 秒采集一次。这样运行一段时间后再回去查看生成的报告就能得到这段时间内的平均值和峰值。这个方法对普通用户来说稍微重了一点但在公司环境里做硬件验收、或者在帮朋友排查时不方便久坐盯屏就非常实用。我自己给一个客户测过一块经常掉速的 NVMe SSD就是用数据收集器集连续采集了半小时最后导出的数据清楚显示温度一高连续读取就开始周期性跳水这种问题是跑一圈分未必能复现的。4. winsat disk命令行里那个真正能“跑分”的原生工具4.1 一个被低估的命令行强悍工具如果说前面几个工具都偏“观察型”那 winsat 就是 Win10 自带工具里真正能主动给硬盘跑分的存在。它全称是 Windows System Assessment Tool平时系统会用它做性能评估只是大多数人不知道还能单独调用磁盘测试。用 Win X 菜单打开“Windows PowerShell管理员”或“命令提示符管理员”就可以直接执行 winsat disk 系列命令。为什么要管理员权限因为它需要在盘上创建临时文件并进行写入测试普通权限容易被系统拒绝。4.2 顺序读写、随机读写怎么敲最常用的两个命令是winsat disk -seq -read -write -drive C winsat disk -ran -read -write -drive C第一条做顺序读写测试第二条做随机读写测试。-drive参数可以指定盘符比如想测 D 盘就把-drive C改成-drive D。执行完后命令行窗口会打印类似这样的内容Disk Sequential 64.0 Read 3315.20 MB/s Disk Sequential 64.0 Write 2055.44 MB/s Disk Random 16.0 Read 1024.55 MB/s Disk Random 16.0 Write 811.76 MB/s不同系统和硬盘的输出结果会略有差别但结构基本一致核心就是这几个速度值。如果你只想测顺序读也可以只执行winsat disk -seq -read只测随机写则是winsat disk -ran -write。具体哪个参数配哪种模式可以通过winsat disk -?查看帮助。4.3 影响结果准确性的细节很多人第一次跑 winsat 数字偏低就开始怀疑工具不行其实多半是环境没准备好。第一个坑是写在系统盘上会受后台进程干扰。操作系统自己会在 C 盘上不断产生日志、临时文件和缓存这在测 C 盘时会干扰结果。条件允许的话把测试文件放在非系统分区比如 D 盘或 E 盘会让数字更接近这块盘的裸性能。第二个坑是剩余空间不足。winsat 会在目标盘生成几个大型临时文件空间不够时测试可能报错或者因文件系统碎片化导致速度滑坡。建议留出至少 5GB 空闲空间再测。第三个坑是后台扫描任务。Windows Defender 的实时扫描、磁盘碎片整理计划任务、甚至 Windows Update 在后台下载都会抢走一部分磁盘资源。跑 winsat 之前最好先打开任务管理器看一眼磁盘活动确认基本没有什么进程在大量占用硬盘后再开始。我第一次跑机械硬盘时因为没关 Windows Search 索引服务顺序读取结果比第二次低了差不多 20%后来把索引暂停再测数值立刻恢复到了接近标称水平。所以测速不是越跑越快而是先让系统安静下来数字才有参考价值。5. PowerShell 把 Get-Counter 封装成简易测速脚本5.1 Get-Counter 基础用法PowerShell 里有个命令叫 Get-Counter可以读取和性能监视器同源的计数器数据。直接在 PowerShell 里执行Get-Counter -Counter \PhysicalDisk(*)\Disk Read Bytes/sec -SampleInterval 1 -MaxSamples 5这条命令会每秒采集一次读取速度总共采集 5 次输出结果里能看到每个磁盘实例的 CookedValue那个就是当前的字节每秒速率。如果想顺便看到写入速度可以把计数器改成Get-Counter -Counter \PhysicalDisk(*)\Disk Read Bytes/sec,\PhysicalDisk(*)\Disk Write Bytes/sec -SampleInterval 1 -MaxSamples 3输出的效果不如任务管理器直观但胜在能被脚本处理。我在日常运维里经常把它和日志采集结合把采集到的速度写入文本文件方便后续做趋势分析。5.2 复制文件 自动取样算出平均读写速度既然 Get-Counter 能采集实时值那我们就可以用它做一个粗糙但完全自带的“测速脚本”。思路很简单先创建一个大文件然后在复制的过程中持续取样最后算平均值。下面这个例子在 E 盘创建 2GB 测试文件再复制到 F 盘同时每秒采集一次写入速度并计算平均值# 创建 2GB 测试文件 fsutil file createnew E:\speedtest.tmp 2147483648 # 后台开始采样写入速度 $job Start-Job -ScriptBlock { Get-Counter \PhysicalDisk(*)\Disk Write Bytes/sec -SampleInterval 1 -MaxSamples 10 | Select-Object -ExpandProperty CounterSamples | Where-Object { $_.InstanceName -notlike *_Total } | Group-Object InstanceName | ForEach-Object { [pscustomobject]{ Disk $_.Name AvgWriteMBs [math]::Round(($_.Group | Measure-Object CookedValue -Average).Average / 1MB, 2) } } } # 复制文件产生实际的写入压力 Copy-Item E:\speedtest.tmp F:\speedtest.tmp -Force # 等待采样结束查看结果 Wait-Job $job | Out-Null Receive-Job $job Remove-Job $job # 清理临时文件 Remove-Item E:\speedtest.tmp, F:\speedtest.tmp -Force这套脚本不算完美因为采样时长不固定中间还可能有系统缓存干扰但它把“任务管理器里看到的瞬时速度”变成了可计算的平均值。如果你只是想了解大概性能完全够用。5.3 为什么说PowerShell方案更适合长期记录相比 winsat 的一次性测试Get-Counter 的另一个优势是可持续运行。你可以用计划任务在每天固定时间跑一段采样把结果输出成 CSV 文件积攒一段时间后硬盘速度的退化曲线就能直观反映出来。对于硬盘这种会随寿命衰减的硬件来说历史趋势往往比单次峰值更重要。特别提醒一点PowerShell 本身不会主动给硬盘加压脚本里的压力还是来自后续的文件复制或实际工作负载。如果你想测的是“低负载下的日常速度”而不是“极限峰值”这种基于真实负载的采样其实更有现实意义。很多第三方软件上来就跑满队列深度测出的数字虽然好看但未必代表你平时用机时的体验。6. 几组实测数据与踩坑记录6.1 不同硬盘用自带工具测出来的参考值下面这些数据来自我手头的几块盘接口不同、使用年限不同仅供参考。测试都是在系统相对空闲时用 winsat 顺序读写命令跑的非系统分区。硬盘类型winsat顺序读(约)winsat顺序写(约)备注机械硬盘 2.5寸 5400转130 MB/s120 MB/s日常系统盘会很卡SATA SSD 860 EVO520 MB/s480 MB/sSATA接口天花板NVMe SSD PCIe 3.01800 MB/s1500 MB/s受主板接口限制NVMe SSD PCIe 4.03300 MB/s2000 MB/s带缓存盘前段较快第一次跑 NVMe 的时候我觉得 winsat 的数字比第三方软件慢不少后来才想明白是测试块大小和队列深度不一样。winsat 的模型更偏向系统评估而第三方软件往往通过更高队列深度拼命压榨硬盘峰值。两者不是谁对谁错就是测试口径不同。6.2 我踩过的几个坑最容易踩的坑是后台任务抢资源。有一次我测一块 SATA SSD顺序读只有 300MB/s比正常低了很多排查了一圈才发现 Windows Search 正在后台重新索引 E 盘里面全是几十万个小文件。等索引跑完再测速度恢复到了 520MB/s 左右。所以测速前无论如何都要先看一眼任务管理器里的磁盘活动是不是接近 0%。第二个坑是 SLC 缓存导致的“测速虚高”。现在很多 SSD 会划分一部分空间模拟成 SLC 缓存实际写入时只要没超过缓存区大小速度能跑得很夸张一旦缓存写满速度会断崖式下跌。如果你用 winsat 测写入文件体积不大可能全程都跑在缓存区内显示出的速度比实际写入能力高不少。这个时候不用急着否定硬盘多测几次或者用稍大一点的文件观察会不会掉速反而更有参考价值。第三个坑是系统盘上的虚拟内存文件会干扰写入测试。C 盘上如果开了系统托管的分页文件Windows 会随时修改 pagefile.sys导致写入速度忽高忽低。这就是我前面反复建议“尽量测非系统盘”的原因。6.3 怎么判断测出来的速度正常还是翻车最靠谱的判断依据不是看绝对数值而是对比这块盘型号的标称速度或同类盘的常见水平。SATA SSD 读不到 400MB/s 可以考虑接口或驱动问题NVMe 盘顺序读只有 500MB/s大概率是插在了 PCIe 3.0 的插槽上却以为是 4.0 的速度或者线材、转接卡存在瓶颈。如果连续测三次每次结果差异很大也不要急着说硬盘坏了。先看测试间隔里有没有系统更新、杀毒软件扫描、碎片整理这类计划任务在跑。把这些外部因素排除干净再测。如果速度依然剧烈波动同时伴随卡顿、假死或蓝屏那才需要进一步查看硬盘健康状态。还有一个经验是不要只盯着测速结果判断硬盘寿命。很多硬盘在接近寿命终点时速度看起来还是正常的但会随机出现坏道或掉盘这些靠跑分是发现不了的。如果你电脑频繁出现文件损坏、开机异常哪怕测速正常也该及时备份重要数据然后检查 SMART 信息里的“重映射扇区计数”和“不稳定扇区计数”。6.4 一点个人建议如果只是临时验机winsat 一条命令就足够了如果想知道负载波动任务管理器和资源监视器最快如果需要留档和长期监控性能监视器和 PowerShell 是更好的选择。我本人并不否定第三方测速工具毕竟 CrystalDiskMark 这类软件界面友好、选项丰富日常用起来确实方便。但“没装第三方软件就测不了硬盘速度”这个想法确实不太对。Win10 自带工具虽然不是一键式图形化跑分但只要理解了顺序读写和随机读写的区别愿意稍微接触一下命令行它们完全能解决绝大多数速度排查需求。尤其是公司电脑不方便安装软件、或者远程排查服务器时这些原生命令反而更省事。以后遇到硬盘速度问题先别急着找安装包打开命令行敲一条 winsat心里大概就有数了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价