我正在将文件从 RAM 磁盘写入 USB 2.0 驱动器,该驱动器上有一个 256MB 的随机填充文件(由 /dev/urandom 创建,以防止文件被过度压缩)。当我查看输出的文件写入速度时dd
,它们平均约为 75MB/s。这特别有趣,因为 USB 2.0 的理论最大速度为 60MB/s。
我正在运行的命令是:
dd if=/var/mnt/temp_data/urandom of=/mnt/usb/$FILE_NAME bs=10M count=1
请注意,我多次运行此程序,并将驱动器填满至 95%。之所以使用 10MB 文件,是为了确保驱动器非常接近 95% 的容量,而使用较大的文件则不会出现这种容量,因为我不知道将插入多大尺寸的内存条,而拥有多个文件是测试的一部分。
如果动机会影响写入速度,我正在做的是测试系统上 USB 端口的写入速度,以查看它们是否符合 USB 标准。因此这相对令人沮丧,并且从 /dev/urandom 填充(间接)。
那么为什么会发生这种情况?我该如何解决?我假设输出的测量值dd
不准确,否则我就会开始向 USB 驱动程序编写者出售我的秘密。
(如果这应该在 unix.se 上,我很抱歉,我不确定)
答案1
好的,根据所有评论以及我们在聊天中的长时间讨论,以下是该问题的答案:
当你测试系统上的写入速度时,无论是写入 USB 还是 HDD,写入 FilesSystem 还是直接以 RAW 模式写入磁盘,请务必确保写入足够的数据来填充缓存如果写入的数据不足,则您正在测量写入缓存(位于 RAM 中)的速度
sync
OP,已尝试在写入会话之间循环执行命令来写入 10MB 的文件。
实际发生的情况是,dd
执行写入的命令会非常快速地将数据写入缓存。报告的速度约为 75MB/s。之后,该sync
命令将需要几秒钟才能执行,但 OP 没有考虑到这一点。
在将测试改为写入更大的文件后,结果显示实际写入速度约为 2.2MB/s,完全符合 USB 2.0 标准