私が言及した問題はインターネットの他の場所で議論されました。
- https://www.reddit.com/r/linuxquestions/comments/sbpt23/usb_flash_drive_read_speed_much_slower_in_linux/
- https://forums.linuxmint.com/viewtopic.php?t=328360
- https://www.youtube.com/watch?v=AbNNs-oyuTQ
- https://www.reddit.com/r/linuxquestions/comments/ujwlmn/slow_read_speed_with_samsung_fit_plus_drive_on/
しかし、誰も解決策を見つけることができなかったようです。
私はこれが「Windowsが嘘をついている/Linuxが真実を話している」という種類の問題ではないと確信しています。同じドライブは、同じポート上の同じコンピュータ上のLinuxよりもWindows上で5倍速く実行されるため、これはドライブの状態の問題ではありません。
また、下記の理由でドライブがフォーマットされたファイルシステムに関連していないと思います。
私の考えでは、Linux(および/またはドライバ)がこれらのドライブと通信する方法に問題があり、ドライブが正しく動作しないようです。
私の特別なケースでは、ドライブサムスンUSB Type-C™フラッシュドライブ128GB(MUF-128DA/AM)。
Windowsでは、CrystalDiskMarkを使用すると、約400MB / sのシーケンシャル読み取り速度を得ることができます。
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
この問題を完全に解決するための最良の方法は何ですか?