如何解决 USB 驱动器速度慢的问题?

如何解决 USB 驱动器速度慢的问题?

TLDR:如何对插入笔记本电脑的 USB 3.1 设备速度缓慢进行故障排除。

问题:当我复制(尝试过 GUI 和终端)时,前几个 .iso 文件几乎立即复制 300mb/s+,但随后第 3/4 个文件开始减慢至 12mb/s 以下(即使一次复制一个)。

硬件:

  • 戴尔 XPS 15 9520(Fedora Linux 37 - 工作站)
  • Sandisk Extreme GO USB 3.1 64GB(使用 Ventoy)
  • 戴尔 USB-C 转 USB-A/HDMI 适配器
  • Anker PowerExpand+ 7 合 1 USB-C PD 集线器

尝试过:

  • 重新格式化 USB(gparted - exfat)。
  • 在安装和未安装 Ventoy 的情况下使用 USB。
  • 使用不同的端口、不同的适配器/集线器。
  • 一次性复制大量 .iso 文件与一次复制一个文件 - 等待每个文件完全复制。

无论哪种方式,在几个文件(大约 4GB)之后,USB 驱动器都会变得非常慢。弹出 USB(通过 GUI 或终端)可能需要很长时间,但重新安装后速度会恢复得很快。使用 GUI 弹出时,我收到消息设备忙 - 所以现在使用终端并等待命令完成。

司机 |港口详情:

$ udevadm info -q path -n /dev/sdc

/devices/pci0000:00/0000:00:14.0/usb4/4-1/4-1.1/4-1.1:1.0/host1/target1:0:0/1:0:0:0/block/sdc


$ lsusb -t

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/1p, 5000M
        |__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 5: Dev 6, If 0, Class=, Driver=, 480M
    |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 9, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 4: Dev 8, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 3: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
            |__ Port 3: Dev 11, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
            |__ Port 4: Dev 12, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 4: Dev 13, If 0, Class=Hub, Driver=hub/4p, 480M
    |__ Port 3: Dev 15, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 2: Dev 16, If 0, Class=, Driver=, 12M
    |__ Port 6: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 6: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 6: Dev 4, If 2, Class=Video, Driver=uvcvideo, 480M
    |__ Port 6: Dev 4, If 3, Class=Video, Driver=uvcvideo, 480M
    |__ Port 9: Dev 7, If 0, Class=Vendor Specific Class, Driver=, 12M
    |__ Port 10: Dev 10, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 10: Dev 10, If 1, Class=Wireless, Driver=btusb, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 20000M/x2
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 2: Dev 3, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
        |__ Port 3: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M

答案1

复印时速度变慢的详细原因将在发布(例如内存缓存)。有趣的是,对我来说,设备的温度似乎也发挥了作用。

网站对于对 USB 驱动器设备的期望设定现实的期望非常有用。

指南展示了如何使用驱动器速度hdparm并对其进行基准测试dd

测试:

$ hdparm -tT /dev/sde
/dev/sde:
 Timing cached reads:   36072 MB in  2.00 seconds = 18064.09 MB/sec
 Timing buffered disk reads: 554 MB in  3.00 seconds = 184.65 MB/sec

小数据量:

$ dd if=/dev/zero of=./largefile bs=8k count=10000
10000+0 records in
10000+0 records out
81920000 bytes (82 MB, 78 MiB) copied, 0.0478257 s, 1.7 GB/s

$ dd if=./largefile of=/dev/null bs=8k
10000+0 records in
10000+0 records out
81920000 bytes (82 MB, 78 MiB) copied, 0.473879 s, 173 MB/s

数据量较大

$ dd if=/dev/zero of=./largefile bs=8k count=1000000
1000000+0 records in
1000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 658.022 s, 12.4 MB/s

$ dd if=./largefile of=/dev/null bs=8k
1000000+0 records in
1000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 45.1854 s, 181 MB/s

结果/结论:与 usb.userbenchmark.com 上发布的平均速度相比略快,很高兴现在知道会发生什么以及测试它的方法。

相关内容