一部のUSB 3フラッシュドライブからデータを読み取ると、LinuxのパフォーマンスはWindowsよりも悪くなります。

一部のUSB 3フラッシュドライブからデータを読み取ると、LinuxのパフォーマンスはWindowsよりも悪くなります。

私が言及した問題はインターネットの他の場所で議論されました。

しかし、誰も解決策を見つけることができなかったようです。

私はこれが「Windowsが嘘をついている/Linuxが真実を話している」という種類の問題ではないと確信しています。同じドライブは、同じポート上の同じコンピュータ上のLinuxよりもWindows上で5倍速く実行されるため、これはドライブの状態の問題ではありません。

また、下記の理由でドライブがフォーマットされたファイルシステムに関連していないと思います。

私の考えでは、Linux(および/またはドライバ)がこれらのドライブと通信する方法に問題があり、ドライブが正しく動作しないようです。

私の特別なケースでは、ドライブサムスンUSB Type-C™フラッシュドライブ128GB(MUF-128DA/AM)

Windowsでは、CrystalDiskMarkを使用すると、約400MB / sのシーケンシャル読み取り速度を得ることができます。

フラッシュドライブ用のCrystalDiskMarkベンチマーク

Linuxで得られる最高の読み取り速度は次のとおりです。

$ dd iflag=direct if=/dev/sda of=/dev/null bs=128k count=1500
1500+0 records in
1500+0 records out
196608000 bytes (197 MB, 188 MiB) copied, 2.3547 s, 83.5 MB/s

さまざまなチャンクサイズと数量を試しました。私もfioそれを試してみましたが、hdparmどちらも約84MB / sの同じ速度を返しました。また、これはパーティションやドライブ上のファイルではなく、/dev/sdaから直接読み取ることです。

ドライブに関するいくつかの詳細は次のとおりです。

$ lsusb -t
...
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M

$ lsusb -d 090c:1000 -v

Bus 002 Device 002: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.10
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         9
  idVendor           0x090c Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.)
  idProduct          0x1000 Flash Drive
  bcdDevice           11.00
  iManufacturer           1 Samsung
  iProduct                2 Type-C
  iSerial                 3 xxxxxxxxxxxxxxxx
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x002c
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              304mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               8
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               8
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength       0x0016
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000002
      HIRD Link Power Management (LPM) Supported
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000c
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   2
      Lowest fully-functional device speed is High Speed (480Mbps)
    bU1DevExitLat           4 micro seconds
    bU2DevExitLat           4 micro seconds
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x000c
  (Bus Powered)
  U1 Enabled
  U2 Enabled

この問題を完全に解決するための最良の方法は何ですか?

関連情報