我想将 SSD 的性能重置为开箱即用的性能。而且我发现使用标题中显示的这些命令后,性能可能会或可能不会重置。
在任何trim
操作之前,运行:
fio --filename=/dev/nvme1n1 --direct=1 --rw=write --bs=4k --size=5G --numjobs=16 --iodepth=32 --group_reporting --name=test
在 Samsung NVMe 980 pro 500G 上显示带宽为~1100MB/s
,然后我修剪设备以恢复性能:
- 使用的命令 A:
nvme format -s1 /dev/nvme1n1
- 结果:运行
fio
上面的命令显示带宽仍然是~1100MB/s
- 结果:运行
- 使用的命令 B:
fstrim -v /mnt/mount-point-of-nvme1n1p1
- 结果:运行
fio
上面的命令显示带宽提高到~1800MB/s
- 结果:运行
我知道nvme format
-s1 和hdparm --security-erase
是低级擦除操作,它擦除设备中的所有数据(分别为 nvme 和 sata),同时fstrim
保留用户数据。此 ssd 中的数据已满 30% 。那么其中一个原因可能是因为这些 30%-full-data 在设备中布局不好,使得操作后性能没有恢复trim
?这里可能会错过什么fstrim
?
谢谢!
使用某些命令,您是在说“这个区域是空的,但您可以随意擦除它”,这意味着它可以随着时间的推移这样做,甚至在它认为暂时足够时停止。使用其他命令,您会说“使所有该区域为空,并且在您真正擦除所有区域之前不要将控制权交还给我”。
fstrim
就像前者。hdparm --security-erase
就像后者一样,将导致更一致的开箱即用 (OOB)/新鲜开箱 (FOB) 性能基准测试。另一个区别是hdparm --security-erase
/nvme format
由于某种原因(例如,由于内部过度配置),命令将能够擦除当前无法“访问”的块。重要的是要知道命令是否会在所有工作完成之前返回 - 如果它只是擦除闪存转换层,那么数据是不可恢复的,但单元实际上没有被预先清除......如果您在驱动器先前“满”的情况下长时间以最高速度不间断地写入,则会出现差异。使用类似技术的性能下降点可能会更早,
fstrim
因为您可以更快地用完预擦除的块。此外,正确擦除驱动器的所有单元显然也会缩短其使用寿命。(还查看
fio
您提供的命令行,很遗憾您没有使用更快的同步fio
ioengine 之一......考虑到默认 ioengine ,您的iodepth
设置可能毫无意义:-( )参考