UASP使Raspberry PI 4磁盘IO速度提高50%

2020-07-06 05:34:14

你可以在这里观看与这篇博客文章相关的视频:UASP让树莓PI变得更快了吗?

几周前,我用我的Raspberry PI 4和外置USB SSD驱动器做了一些测试。我发现USB3.0固态硬盘比我测试的最快的microSD卡快十倍。

在与那篇帖子相关的视频评论中,布拉德·曼斯克提到了一些我从未想过的事情。他注意到我链接到了一个没有UASP的Inateck USB3.0 SATA表壳。

在没有UASP的情况下,驱动器是使用仅批量传输(或称BOT)作为大容量存储设备安装的,这是一种专为传输文件而设计的协议,可以追溯到USB全速时代,当时你能获得的最快速度是惊人的12 Mbps!

对于USB3.0,BOT协议削弱了吞吐量。USB3.0的带宽为5Gbps,是USB1.1的400倍。旧的BOT协议将以大块的形式传输数据,并且每个数据块都必须按顺序传送,而不考虑缓冲或能够并行传输的多位数据。

我不想在这里谈太多技术性问题,但是SCSI协议已经存在了很长一段时间--足够长的时间,以至于在这本1994年的呆伯特漫画中它只是一个笑话的一部分。它具有允许并行数据位复制和无序数据传输等功能,因此驱动器可以使用缓冲和缓存机制来获得更好的性能。

大约在USB3.0被引入的时候,大多数USB存储设备和硬盘适配器开始采用该标准。一些只有USB2.0端口的电脑可以更新固件,以便将UASP用于较新的驱动器,因此一些USB2.0连接速度得到了提升。

我们不要操之过急。回到布拉德对我的Pi SSD视频的评论,我回答布拉德,我甚至没有意识到我有Inateck案的非UASP版本。

当它真的到了的时候,我试着看看它有什么不同之处。顶部、侧面和背面完全相同。

只有当你把它拆开并看一看实际的电路板时,差异才会真正明显。较早的非UASP版本在上图的左上角,UASP版本在右下角。UASP版本采用了完全不同的布局,并且使用了不同的控制器芯片。

如果您有一个USB驱动器,并且不想拆卸它并查看控制器芯片的规格,判断它是否安装了UASP支持的唯一可靠方法是将其插入您的PI,然后运行命令lsusb-t:

$lsusb-t/:总线02。端口1:设备1,类别=ROOT_HUB,驱动程序=xhci_hcd/4p,5000M|__端口1:设备2,如果为0,类别=大容量存储,驱动程序=UAS,5000M。

此命令在树中列出所有USB设备,并且对于每个硬盘,您应该会看到列出了一个驱动程序。如果是UAS(如上例所示),则您的驱动器支持UASP,您将获得最佳速度。如果它是USB存储,那么它使用的是旧的机器人协议,你不会看到它的全部潜力。

我还有另外两个旧的SATA适配器,多年来我在修理电脑时使用过,当时我会把一个旧硬盘克隆到一个新的硬盘上,或者试图从损坏的电脑的硬盘上恢复数据。

我检查了我从Micro Center购买的这个内陆适配器,它也支持UASP,这是一个惊喜,因为Micro Center网站上的规格显示数据传输速率高达480 Mbps,哈!

然后我检查了我在2015年购买的StarTech SATA适配器,它也支持UASP。因此,看起来大多数较新的USB3.0适配器确实支持它,但在亚马逊或其他零售商网站的规格中并不总是很容易看到。

尽管比PI 4旧的树莓PI只有USB2.0端口,我还是想检查它们是否支持UASP,因为我们马上就会看到,仅仅使用UASP与旧的BOT协议在性能上会有很大的不同,这即使在旧的USB2.0端口上也会有所帮助。

唉,在测试完我所有的适配器后,我发现它们都使用USB存储驱动程序挂载驱动器。我试图找到任何关于PI 3B+固件是否支持UASP的官方确认,但我在PI论坛的这篇帖子中找到的所有信息都是关于PI的DWC_OTG驱动程序不支持UAS驱动程序所需的功能。

因此,如果您使用的是较旧的Raspberry PI,那么您的快速外部存储选择非常有限。如果您想做任何需要数据传输的事情,比如构建NAS、设置Nextcloud、将其用于备份或媒体流,我都会坚持使用PI 4。

这些基准测试表明,当你在Raspberry PI 4上使用UASP和驱动器时,它会产生多大的不同。

总体而言,UASP发挥了巨大的作用。顶部有用于测试大文件传输的hdparm和dd测试基准。它们分别显示了50%和40%的加速比。

底部有4K随机访问基准,这是更好地衡量硬盘如何执行典型计算任务的指标。而UASP仍然有很大的影响力。随机读取速度提高了35%,随机写入速度提高了20%。

但是我也想检查一下其他的东西。随着更高效的数据传输成为可能,在需要多少电力方面会有什么可衡量的差异吗?

对于许多树莓PI项目,高效的电力使用是一个重要的考虑因素,特别是当你使用电池或太阳能运行PI的时候。

我使用了Satechi USB-C电源测试仪,并使用UASP测量了8%的峰值节能。这意味着如果你进行大量的文件传输,电池的运行时间将增加8%。

与我的所有基准测试一样,我将每个基准测试运行了四次,放弃了第一个结果。在我之前的Raspberry Pi Cluster视频中,我谈了很多关于我的基准测试过程。

您还可以在图灵-pi-cluster存储库的这个基准问题中看到所有原始数据和我的方法。如果您运行相同的基准测试,如果您使用不同的固态硬盘或盘柜,则可能会得到略有不同的结果。

我的建议是在PI4上使用UASP和USB3.0设备,否则你会错过相当大的性能提升。此外,请记住将USB 3.0设备插入蓝色的USB 3.0端口,而不是黑色的USB 2.0端口,否则您不会看到任何性能差异。