Почему производительность записи на мой USB-накопитель падает более чем на 50% при использовании Ubuntu и Windows 10?

Я обнаружил много вопросов, связанных с низкой производительностью при переносе данных на USB-накопитель, но ни один из них не подходит для моей ситуации.

Я использую двойную загрузку Ubuntu 16.04 / Windows 10 на двух разных машинах (одна на базе AMD, другая на Intel). Я постоянно наблюдаю скорость передачи данных 41 МБ / с на USB-накопитель в Ubuntu и 120 МБ / с на Windows 10. Я провел много разных тестов и постоянно получал результат. Те же результаты Я тестировал с разными форматами файловых систем, инструментами, размерами файлов и т. д.

Тест 1 - Ubuntu с дисками Gnome 41,5 МБ / с против Windows 10 с Crystal Disk Mark 141.154 МБ / с

Диски Gnome в Ubuntu 16.04

Sample Size: 1000.0 MiB (1,048,576,000 bytes)
Average Read Rate: 213.5 MB/s (5 samples)
Average Write Rate: 41.5 MB/s (5 samples)
Average Access Time: 0.46 sec (1000 samples)

Crystal Disk Mark в Windows 10

-------------------------------------------------------------------
CrystalDiskMark 5.2.0 x64 (UWP) (C) 2007-2016 hiyohiyo
                       Crystal Dew World : http://crystalmark.info/
-------------------------------------------------------------------

* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :   230.883 MB/s
  Sequential Write (Q= 32,T= 1) :   141.154 MB/s
     Sequential Read (T= 1) :   333.212 MB/s
    Sequential Write (T= 1) :   125.621 MB/s

  Test : 1024 MiB [D: 0.0% (0.0/29.8 GiB)] (x5)  [Interval=5 sec]
  Date : 2016/11/24 3:25:09
    OS : Windows 10  [10.0 Build 10586] (x64)

Тест 2 - копия файла 5 ГиБ - Ubuntu 40 МБ / с против Windows 10 98–120 МБ / с

Ubuntu

Я использовал сценарий для очистки кешей, скопировал файл с помощью dd и снова очистил кеши. Я называю это временем, чтобы отслеживать время выполнения.

1024+0 records in
1024+0 records out
5368709120 bytes (5.4 GB, 5.0 GiB) copied, 102.44 s, 52.4 MB/s

real    2m7.042s
user    0m0.012s
sys 0m10.056s

5368709120 ÷ 127.042 = 42259324.632798602
42259324.632798602 ÷ 1024 ÷ 1024 = 40.301632531

~ 40 МБ / с

Windows 10

Я использовал сценарий PowerShell, чтобы скопировать тот же файл в USB-накопитель, а затем извлеките его. Выполняется с помощью команды measure для записи времени выполнения. Вызов извлечения возвращается немедленно, и операция выполняется в фоновом режиме, но во всех случаях экранное уведомление «можно безопасно удалить» отображалось одновременно с результатами измерения.

PS > measure-command {.\test.ps1}

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 42
Milliseconds      : 381
Ticks             : 423816672
TotalDays         : 0.000490528555555556
TotalHours        : 0.0117726853333333
TotalMinutes      : 0.70636112
TotalSeconds      : 42.3816672
TotalMilliseconds : 42381.6672

5368709120 ÷ 42.382 = 126674274.928035487
126674274.928035487 ÷ 1024 ÷ 1024 = 120.806002548

~ 120 МБ / с

Даже добавление щедрых 10 секунд для извлечения (что оказалось мгновенным):

5368709120 ÷ 52,382 = 102491487.915696232
102491487.915696232 ÷ 1024 ÷ 1024 = 97,743499675

~ 98 МБ / с

Дополнительные сведения

Журнал подключения USB-накопителя в Ubuntu:

[  350.460108] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[  350.477525] usb 2-1: New USB device found, idVendor=05dc, idProduct=a212
[  350.477532] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  350.477537] usb 2-1: Product: USB Flash Drive
[  350.477540] usb 2-1: Manufacturer: Lexar
[  350.477543] usb 2-1: SerialNumber: xxxxxxxxxxxxxxxxxxxxx
[  350.501276] usb-storage 2-1:1.0: USB Mass Storage device detected
[  350.502121] scsi host8: usb-storage 2-1:1.0
[  350.502218] usbcore: registered new interface driver usb-storage
[  350.503430] usbcore: registered new interface driver uas
[  351.501106] scsi 8:0:0:0: Direct-Access     Lexar    USB Flash Drive  PMAP PQ: 0 ANSI: 6
[  351.502007] sd 8:0:0:0: Attached scsi generic sg0 type 0
[  351.503962] sd 8:0:0:0: [sda] 62586880 512-byte logical blocks: (32.0 GB/29.8 GiB)
[  351.504490] sd 8:0:0:0: [sda] Write Protect is off
[  351.504501] sd 8:0:0:0: [sda] Mode Sense: 2b 00 00 08
[  351.505598] sd 8:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[  351.638276]  sda: sda1
[  351.640491] sd 8:0:0:0: [sda] Attached SCSI removable disk
[  351.818131] [EXFAT] trying to mount...
[  351.824012] [EXFAT] mounted successfully

Ubuntu Сценарии тестирования:

test.sh:

#!/bin/bash

sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
time ./cmd.sh

cmd.sh:

#!/bin/bash

dd if=./lf of=/media/flashdrive/lf bs=5M
sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

Сценарий тестирования Windows:

test.ps1:

cp lf D:/.
$driveEject = New-Object -comObject Shell.Application
$driveEject.NameSpace(17).ParseName("D:").InvokeVerb("Eject")
1
задан 26 November 2016 в 17:51

1 ответ

Вы пробовали различными размерами блока в dd при тестировании Ubuntu? Я нашел, что во многих системах (компьютерное оборудование + программное обеспечение) это работает хорошо с bs=4096. Я замечаю, что Вы использовали огромный размер блока, bs=5M.

, Возможно, это будет работать лучше с меньшим размером блока, возможно, 4096, возможно, некоторое значение 'между моим и Вашим'. Можно также попробовать некоторым другим инструментом (не dd, но например CP, которое выбирает размер блока автоматически).

история также важна. Для создания справедливого сравнения это - хорошая идея запуститься с пробела pendrive, где Вы записали нули во все элементы памяти. См. эту ссылку

Восстановление исходная скорость

0
ответ дан 26 November 2016 в 17:51
  • 1
    Они могли даже изменить программное обеспечение шифрования так, чтобы оно передало ключ или скопировало decypted файлы в корень / или безотносительно.. there' s никакой предел тому, что они могли сделать. – John Hunt 5 September 2018 в 01:11

Другие вопросы по тегам:

Похожие вопросы: