本文目录导读:

测试磁盘的随机读写性能,是评估磁盘(尤其是SSD)在处理大量小文件、数据库、操作系统页面文件等场景下表现的关键指标,与顺序读写(看大文件拷贝速度)不同,随机读写主要关注IOPS(每秒输入输出操作次数)和延迟。
以下为你介绍几款主流、专业的测试工具及具体测试方法,涵盖Windows和macOS/Linux系统。
核心指标解释
在开始测试前,了解这两个指标很重要:
- IOPS (Input/Output Operations Per Second):每秒能进行多少次读写操作,数值越高越好。
- 延迟 (Latency):完成一次读写操作所需的时间,数值越低越好。
- 队列深度 (Queue Depth, QD):系统同时向磁盘发出的读写请求数量,QD越高,通常IOPS越高,但延迟也会增加。
- 线程数 (Threads, T):发起请求的线程数量,与队列深度类似。
Windows 系统推荐工具
CrystalDiskMark(最推荐,简单直观)
这是目前最主流的磁盘基准测试工具,界面清晰,无需复杂配置。
-
下载:官网或各大软件站(免费)。
-
测试步骤:
- 打开软件。
- 选择要测试的盘符(如C盘、D盘)。
- 设置关键参数:
- Profile:选择
Real World Performance(真实性能)或默认的Peak Performance,对于随机读写,推荐使用默认设置。 - Size (数据包大小):通常选
1 GiB(1GB)或4 GiB,这会用这个大小的文件去测试。注意:对于随机读写,数据包大小非常重要。- 4K (4KB):最关键的随机读写测试,它模拟了操作系统、数据库、网页缓存等最典型的随机小IO场景,这就是常说的“4K随机读写性能”。
- 512K-1M:接近顺序读写了。
- Number of Runs:默认5次,可忽略。
- Profile:选择
- 开始测试:点击“All”或直接点击对应的按钮。
-
结果解读:
- SEQ1M Q8T1:顺序读写(1M大块,8队列1线程)。
- RND4K Q32T16:随机4K读写(32队列16线程),代表多任务/高负载下的随机性能(IOPS)。
- RND4K Q1T1:单队列单线程随机4K读写,代表日常轻度随机操作(如打开单个应用)的延迟表现。这个值对日常使用感受影响最大。
- 你需要重点关注 RND4K 下方的读 (Read) 和 写 (Write) 值,数值越高越好。
AS SSD Benchmark(经典,注重压测)
除了IOPS,它还提供访问时间测试。
- 测试步骤:
- 选择盘符。
- 点击
Start。 - 结果解读:
- 重点关注
4K和4K-64Thrd这两行。 4K= 单队列单线程随机性能。4K-64Thrd= 64队列深度随机性能(高并发)。- 左侧会显示具体的 IOPS 数值。
- 右侧的
Acc. Time(访问时间)列是延迟,单位毫秒(ms),这个值越小越好(通常SSD在0.02-0.08ms之间)。
- 重点关注
Iometer(专业级,功能极强,但复杂)
适合需要自定义队列深度、负载模式、测试时间的高级用户。
- 测试步骤:
- 安装并打开,创建测试文件(Target)。
- 设置访问模式:在
Access Specifications中新建一个规格。- 设置
Transfer Request Size为 4096 bytes(即4KB)。 - 设置
Percent Random为 100%(全随机)。 - 设置
Percent Read/Write根据需要调整(如50%读/50%写,或100%读)。
- 设置
- 设置工作负载:在
I/O Queue Depth中设置队列深度(如QD=1, QD=8, QD=32)。 - 开始测试:点击绿色旗帜按钮,结果会实时显示IOPS和延迟(Latency)。
macOS / Linux 系统推荐工具
fio(行业标准,命令行)
fio 是Linux/Unix系统上最权威、最灵活的磁盘性能测试工具,macOS可通过Homebrew安装 (brew install fio)。
-
测试随机读取(4K, 队列深度1, 单线程,模拟日常操作):
fio --name=random-read --ioengine=libaio --rw=randread --bs=4k --size=1G --numjobs=1 --iodepth=1 --runtime=30 --time_based --direct=1
-
测试随机写入(4K, 队列深度32, 多线程,模拟高负载):
fio --name=random-write --ioengine=libaio --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=8 --runtime=30 --time_based --direct=1
-
结果解读:运行结束后,
fio会输出详细结果,重点关注:IOPS行:直接给出了 IOPS 值。lat (usec)或lat (msec):给出了平均、最大延迟。bw:带宽(对于4K随机,带宽一般不是关键,IOPS更重要)。
命令参数解释:
--bs=4k:读写块大小为4KB(随机测试的核心)。--rw=randread/randwrite:随机读/写。--iodepth=<N>:队列深度。1模拟单任务,8-32模拟多任务或服务器压力。--numjobs=<N>:并发线程数。--size=1G:测试文件大小,建议用2倍于内存大小,或至少1GB,以避免内存缓存干扰。--direct=1:绕过操作系统缓存,直接读写磁盘(测试真实磁盘性能)。--runtime=30:测试运行30秒。
hdparm(Linux,简单测延迟)
可以快速查看硬盘缓存状态,但不是IOPS测试工具。
- 测试延迟(仅限Linux):
sudo hdparm -I /dev/sda | grep -i "Timing cached"
不过更直接的延迟测试用
fio更方便。
macOS 自带 dd 命令
dd 只能测顺序读写,不能测随机,请勿用它来评估随机IOPS。
影响结果的几个关键因素(必读)
- 空闲盘 vs 使用过的盘:
- 新盘(空盘):写入性能(尤其是随机写入)通常非常高(因为有SLC缓存)。
- 使用过半的盘:随机写入性能会明显下降,测试前,建议不要在刚格式化完的空盘上测,尽量在模拟真实使用状态的盘上测,或者持续写入一段时间(用
fio跑几分钟甚至几小时)再测,这样结果更真实。
- 数据包大小 (Block Size):
4K 是随机性能的灵魂,千万别用1M块去测“随机”,那会变成顺序大块传输。
- 队列深度与线程数:
- 队列深度1(QD1)模拟单用户轻负载(如打开记事本)。
- 队列深度32(QD32)模拟数据库、多用户、虚拟机等高并发场景。
- 系统后台任务:
关闭杀毒软件、Windows Defender实时扫描、OneDrive/Dropbox同步、系统更新等,这些后台活动会严重干扰随机写入测试,导致结果偏低。
- 驱动器健康状态:
如果磁盘(尤其是SSD)剩余空间不足(<10%)、存在坏块或寿命快到期,随机性能会急剧下降。
总结操作流程(推荐小白)
- Windows:下载 CrystalDiskMark → 选择盘符 → 直接点 All → 看 RND4K 行的数值。
- macOS/Linux:打开终端 → 安装
fio→ 复制粘贴上面提供的第1个命令(随机读,QD1) 和第2个命令(随机写,QD32) → 看输出的 IOPS 和延迟。 - 对比标准:一个普通的SATA SSD(如860 EVO)的4K随机读取IOPS通常在 30K-80K 左右;高端NVMe SSD(如980 Pro)可以达到 200K-500K+,机械硬盘(HDD)的4K随机IOPS通常只有 几十到几百(不到1K)。
希望这份指南能帮你准确评估磁盘的随机读写性能,如果有具体的测试结果需要解读,欢迎继续提问。
标签: IOPS测试