我如何在USB 2.0端口上超过USB 2.0速度?


3

我正在从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年

Answers:


2

好的,所以关注所有评论和我们在聊天中的冗长讨论是这个问题的答案:

当您在系统上测试写入速度时,无论是写入USB还是HDD,写入FilesSystem或直接以RAW模式写入磁盘,始终要确保写入足够的数据来填充缓存。如果没有写入足够的数据,则表示您正在测量写入缓存的速度(在RAM中)

OP,尝试sync在写入会话之间的循环执行命令中写入10MB文件。

实际上发生了什么,dd编写的命令会非常快速地将数据写入缓存。报告速度约为75MB / s。在该sync命令执行后需要几秒钟,但OP没有考虑到这一点。

更改测试以编写更大的文件后,发现实际写入速度约为2.2MB / s,这与USB 2.0标准完全吻合

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.