有没有办法减慢 SSD 修剪的速度,以便它在进行时不会影响驱动器的读取性能?

有没有办法减慢 SSD 修剪的速度,以便它在进行时不会影响驱动器的读取性能?

在我的测试Linux机器上创见 TS2TMTE662T2-G1 SSD安装。我在 1.8TB ext4 分区上创建了一个 100GB 的虚拟文件,然后我运行cat <bigdummy.bin >/dev/null以尽快顺序读取该文件中的数据。

运行时cat,我iostat -t nvme0n1p6 --human 1在不同的 shell 窗口中运行以监视 SSD 的读取性能……它看起来相当不错,我的读取速度约为每秒 2.2 GB:

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
nvme0n1p6     18232.00         2.2G         0.0k         0.0k       2.2G       0.0k       0.0k

然后,我过去常常rm从分区中删除大约 600GB 的(不相关的)文件,然后我运行fstrim --all命令 SSD 开始擦除新丢弃的块。在进行修剪的同时,我iostat再次查看了 的输出,以查看我的cat进程的读取性能现在如何:

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
nvme0n1p6       215.00        18.1M         0.0k         8.8G      18.1M       0.0k       8.8G

呃,一点都不好。读取带宽已降至可怜的 18MB/秒,每秒事务数同样下降了 100 倍。

8.8G/s对于我来说,期望正在执行的 SSD 具有 100% 的正常读取性能可能不太合理kb_dscd...但由于块丢弃操作对时间的要求不是特别严格(因为我不太关心它是在 30 秒内完成还是持续 30 分钟),有什么方法可以减慢该过程,以便在执行过程中驱动器的读取性能不会受到太大影响?例如,如果 SSD 仅执行 500 M/s 的操作kb_dscd,它(可能)会有更多的时间以接近其正常速率来处理其正常的读取 I/O 任务?

(动机:这是一个媒体流媒体盒,它最终将需要同时进行录制和播放,可能每周 7 天、每天 24 小时,如果我能够定期启动 TRIM 操作而不会显著影响盒子继续同时流式传输内容的能力,那就太好了。)

答案1

fstrim接受-o(offset) 和-l(length) 选项。您可以使用它们来限制每次命令调用所修剪的 LBA 数量。

相关内容