我一直在尝试基准测试读取和写入 3.5 英寸软盘上 FAT 文件系统中的整个可用空间需要多长时间。读取不是什么大问题。只要之前没有读取过该文件到测试,我可以简单地运行time cp /media/user/disk/file .
。但是,事实证明,写作更麻烦。
如果我使用cp
as 来阅读,我得到的结果接近于零。命令完成,驱动器在接下来的 45 秒左右继续写入。我还尝试使用dd if=/dev/urandom of=/media/user/disk/file bs=1457664 count=1
动态生成随机数据以放在磁盘上,但结果相同。我尝试的最终解决方案是pv file > /media/user/disk/file
,同样的结果,只是呈现方式不同。至少我发现声称的 192MiB/s 写入速度很有趣。
我怀疑它与这样的东西有很大的不同,但我正在运行 Ubuntu 18.04 x64 MATE。该驱动器使用 USB 进行电源和数据传输。
Linux 广泛使用缓冲存储器来读/写文件。因此,对驱动器的写入可能看起来更早完成,而实际上,linux 继续将数据提交到驱动器。要将缓冲区刷新到磁盘,可以使用“同步”命令。因此,这样的命令
time sh -c "cp /media/user/disk/file .. && sync"
可以更好地了解将副本完全写入驱动器所需的实时时间。需要带有“sh”的构造,因为命令时间仅支持单个命令作为其参数。
您可以使用
time
来测量cp
命令本身写入所用的时间,然后用于sync
刷新缓冲区,以及在那些之外测量总时间。请参阅以下示例。写入通过 SATA 连接的硬盘驱动器:
写入 USB 3 随身碟:
请注意,在写入 pendrive 时,刷新缓冲区的时间要多得多,但复制命令的时间也会增加。
bc
可以从文件大小和总时间计算复制速度。