我正在从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上,我很抱歉,我不确定)
首先,bs = 10M count = 1不会给你一个很好的写入速度近似值,因为你只写了10Mb。数据可能会在某处缓存。我建议写至少1Gb的数据。尝试bs = 1M count = 1000,看看结果是否不同
—
Art Gertner 2014年
@smc我不只是运行那一次,我正在用10MB文件填充驱动器,并且在整个测试中平均~75MB
—
Yann
您提供的命令没有用10MB文件填充驱动器,它只写一个。在执行此命令期间由dd报告的热性能可能受写入缓存的影响。尝试我上面建议的命令参数,或修改它以便dd填满整个驱动器
—
Art Gertner 2014年
@smc当你多次运行它时会这样做。这是一个for循环。
—
Yann
你不理我刚才说的话吗?多次运行时,不能依赖该命令中报告的速度。这就是'count = x'的意思
—
艺术格特纳2014年