일부 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

이 문제를 완전히 해결하는 가장 좋은 방법은 무엇입니까?

관련 정보