hdparm -t 测试原始读取速度,-d1 启用 dma 可显著提升传统 ide/pata/sata 机械盘性能;ssd/nvme 不适用 -t/-d 优化,应改用 fio 或 dd direct 测试。

直接用 hdparm -t 测试原始读取速度,再用 hdparm -d1 启用 DMA,是快速验证和提升传统硬盘(尤其是 IDE/PATA/SATA 机械盘)底层读取性能的有效组合。SSD 通常默认启用高效传输模式,DMA 设置影响不大,但测试步骤依然适用。
测原始读取速度:hdparm -t
该命令绕过文件系统缓存,直接从磁盘扇区读取数据,反映硬件层真实吞吐能力:
- 运行
sudo hdparm -t /dev/sda(将/dev/sda替换为你的目标设备,如/dev/nvme0n1不适用此命令,hdparm主要面向 ATA 接口设备) - 输出类似
Timing buffered disk reads: 204 MB in 3.00 seconds = 67.98 MB/sec,这个数值就是实测原始读速 - 建议重复 3 次取平均值,避免单次抖动干扰:
for i in {1..3}; do sudo hdparm -t /dev/sda; done
查当前 DMA 状态:hdparm -I 与 hdparm -d
先确认设备是否支持并已启用 DMA:
- 执行
sudo hdparm -I /dev/sda | grep -i dma,查看输出中是否有* DMA或Enabled字样,确认硬件支持 - 运行
sudo hdparm -d /dev/sda,看using_dma = 0 (off)还是= 1 (on) - 若为 off,且
-I显示支持,说明系统未自动启用,可手动开启
启用 DMA 传输:hdparm -d1
对兼容设备启用 DMA 可显著降低 CPU 占用、提升连续读取效率:
- 执行
sudo hdparm -d1 /dev/sda,成功后返回using_dma = 1 (on) - 立即再跑一次
sudo hdparm -t /dev/sda,对比启用前后的读速变化(老旧 IDE 盘提升常达数倍) - 注意:该设置重启即失效;如需永久生效,把命令追加到
/etc/rc.local(确保有执行权限)或写入 systemd 服务中
补充说明:SSD 与 NVMe 设备的注意事项
hdparm -t 对 NVMe(如 /dev/nvme0n1)不适用,会报错;SSD 虽支持 ATA 命令集,但其性能瓶颈不在 DMA 开关,而在队列深度、NCQ 和控制器固件。此时更推荐:
- 用
sudo hdparm -I /dev/sda | grep -E "(Model|Revision|TRIM)"查 SSD 型号与特性支持 - 用
fio或dd(配合oflag=direct)做更贴近实际负载的测试 - DMA 设置对现代 SATA SSD 一般无实质提升,不必强求











