제가 언급한 문제는 인터넷의 다른 곳에서 논의되었습니다.
- 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
이 문제를 완전히 해결하는 가장 좋은 방법은 무엇입니까?