笔式驱动器比广告宣传的要慢

笔式驱动器比广告宣传的要慢

我买了一个 32 GB 的 U 盘(SanDisk Ultra Fit 3.0)。包装上写着:速度高达 150 MB/s。在我的 Ubuntu Linux 系统上,原始存储设备读取速度(带sudo dd if=/dev/sdb of=/dev/null bs=16M)仅为 51 MB/s。我无法轻松访问其他操作系统来尝试。

出了什么问题?我该如何加快速度?

请注意,该笔式驱动器插入 USB 3.0 端口,在我尝试使用该笔式驱动器之前几分钟,该端口正在以 240 MB/sa 的速度读取外部硬盘。

答案1

我认为你遇到了理论速度和实际速度之间的差异。理论速度是操作/设备/等的速度在最好的情况下。例如,没有发生错误,一切都按计划进行,没有考虑任何外部因素等。实际速度是当所有这些已考虑。

识别此种情况的一个简单方法是在速度前加上“最高”一词。当然,公司会用他们看起来最好的方式宣传自己,但这并不是实际的速度。

编辑:闪存驱动器实际上是随机访问的(这意味着任何数据都可以在恒定时间内访问,无论它在哪里),但被分成连续的块(这意味着为了读取或写入它,您需要读取它之前的所有内容)。当数据写入或读取一个块时,需要读取/写入整个块(当您读取时,不必要的部分会在操作中间的某个地方被丢弃,而当您写入时,相同的内容会写回到之前未更改的部分)。因此,在 pendrive 和读取的情况下,最好的情况是每个请求的数据都对齐确切地用块。在现实生活中,这种情况很少发生,除非在请求或写入数据时考虑块大小(用户对此没有控制权)。

另一件需要考虑的事情是,在幕后,设备和操作系统都可能在必要时进行错误更正,这会减慢进程,但不会导致记录错误(因为检测到时会自动更正)。如果没有这个功能,您可能会在不知情的情况下损坏数据,因此这是一项必要的功能。

TL;DR:最佳情况基本上总是无法实现的。但某些类型的操作可能接近最佳情况(例如,HDD 在处理较少的大文件时的性能远优于处理许多小文件时的性能)。

编辑2:对于闪存驱动器,我不知道哪种类型的操作效果最好。

EDIT3:对于闪存驱动器,测试速度时读取的数据大小并不重要。如果您使用的操作系统一次读取 128 个字节,并且设备的块大小为 256 字节,则每 256 个字节需要两次操作,使速度减半。但是,U盘被视为块设备这一事实表明 Linux 可以检测块大小,因此这种原因不太可能发生。抱歉,我想不出任何其他导致速度变慢的原因,但无论是什么,我认为都无法解决。

相关内容