mac终端测硬盘真实连续读取速度需绕过缓存:先用dd创建1gb测试文件,再cat预热缓存,sudo purge清空页缓存,最后time dd读取并计算mb/s;iostat -d -w 1可实时验证瞬时速率,diskutil benchmark仅适用于apfs宗卷。

要在Mac终端中准确测出硬盘在真实场景下的连续读取性能,必须绕过系统缓存干扰、使用足够大的测试文件,并确保数据从物理介质直接读取而非内存复用。系统自带的dd命令配合sync和drop_caches机制可实现这一目标,无需安装第三方工具。
用dd命令测连续读取速度(推荐)
这一步操作起来很简单,但必须严格按顺序执行,否则结果会严重虚高——系统缓存会让第二次读取显示“2000MB/s”,实际硬盘根本跑不到。
第一步:在终端中输入以下命令创建一个1GB纯零填充测试文件(避免写入耗时干扰读取测试):
dd if=/dev/zero of=/tmp/readtest bs=1m count=1024
第二步:强制将该文件完整载入系统缓存,模拟“热数据”状态(这是后续对比冷读取的关键前提):
cat /tmp/readtest > /dev/null
第三步:清空系统页缓存,确保下一次读取强制走硬盘物理层(【这一步不可跳过,否则测的是内存速度】):
sudo purge
第四步:执行带时间统计的真实读取测试(不保存到磁盘,只计时+丢弃):
time dd if=/tmp/readtest of=/dev/null bs=1m
第五步:观察终端输出末尾的real行时间值(例如real 0m3.245s),用1024MB ÷ 秒数即可算出真实连续读取速度(单位MB/s)。比如3.245秒对应约315MB/s。
用iostat观测实时读取吞吐(辅助验证)
当你需要边拷文件边看硬盘是否真的跑满、或验证dd结果是否稳定,iostat是唯一能持续刷新的原生命令。
打开新终端窗口,输入:
iostat -d -w 1
等待1秒后出现首行输出,在r_MB/s列找到对应你目标磁盘的数值(如disk0s2),该值每秒刷新一次,代表当前瞬时读取速率。
注意:如果该值长期卡在0或低于50MB/s,说明当前没有进程在真正读取硬盘,dd测试结果可能未生效。
用diskutil benchmark快速验证(仅限APFS宗卷)
macOS 13.3+内置了隐藏的磁盘基准测试能力,但仅对APFS格式的宗卷有效,且不显示图形界面,结果直接打印在终端里。
先确认你的目标卷名(如“Macintosh HD”),然后运行:
diskutil benchmark -c 100 -r 1024 -w 1024 /Volumes/Macintosh\ HD
其中-r 1024表示测试1024MB连续读取,-c 100代表预热100次以稳定状态——它比dd更贴近专业测速逻辑,但兼容性差,遇到HFS+或外接NTFS硬盘会直接报错退出。











