...

понедельник, 6 июля 2020 г.

Протокол UASP ускоряет передачу файлов на Raspberry Pi 4 в 1,5 раза

Разработчик Джефф Гирлинг (Jeff Geerling) провёл эксперименты с внешними USB SSD для Raspberry Pi 4 и выяснил, что USB 3.0 SSD работает примерно в десять раз быстрее, чем самая быстрая карта microSD, которая попадала ему в руки.

Но в комментариях к видео ему подсказали одну интересную идею. Один из комментаторов обратил внимание, что тестируемый корпус-адаптер для внешнего диска Inateck USB 3.0 SATA не поддерживает протокол UASP.

Без UASP внешний диск монтируется как Mass Storage Device и работает в режиме Bulk Only Transport (BOT), который ещё в древние времена был ограничен максимальной для тех времён скоростью USB 1.1 всего лишь 12 Мбит/с. И это при том, что у USB 3.0 теоретически максимальная скорость составляет 5 Гбит/с, то есть в 400 раз больше!
Старый BOT передаёт файлы кусками, и каждый из них передаётся строго по очереди, без какого-либо использования буферизации и параллелизации.

Поэтому был создан новый протокол USB Attached SCSI Protocol или UASP.

Если не вдаваться в технические подробности, высокопроизводительный протокол SCSI обладает многими полезными функциями, такими как параллельная передача или передача вне очереди (out of order data transfer), так что диск может использовать буферизацию и кэширование для улучшения производительности.

Когда появился стандарт USB 3.0, его внедрили в большинство устройств хранения USB и адаптеров для жёстких дисков. А которые не могли этого сделать, обновили прошивку, чтобы поддерживать протокол UASP при взаимодействии с более новыми дисками для повышения производительности.

Поэтому после такого комментария Джефф Гирлинг провёл работу над ошибками — и заказал UASP-версию того же корпуса адаптера Inateck USB 3.0 SATA. Внешне они совершенно одинаковы, просто один поддерживает этот протокол, а другой — нет.

Зато различия видны в плате контроллера. Старая версия вверху, новая с совершенно иной принципиальной схемой — внизу. Здесь новая не только схема, но и микросхема контроллера.

На Raspberry Pi можно посмотреть характеристики подключённых дисков следующей командой:

$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M

Она выводит список всех существующих USB-устройств с драйверами. Если в строке Driver указано uas (как в этом листинге), то диск поддерживает UASP. Если же там указано usb-storage, то устройство работает по протоколу BOT.

Судя по всему, большинство адаптеров USB 3.0, выпущенные в последние примерно пять лет, должны поддерживать UASP.

К сожалению, Raspberry Pi 3 B+ и более старые версии Raspberry Pi с интерфейсами USB 2.0 не поддерживают UASP на уровне драйверов.

На КДПВ приведены результаты бенчмарков на Raspberry Pi 4 с включенным UASP и без него:

Как видим, скорость передачи данных в тестах hdparm и dd увеличилась на 50 % и 40 %, соответственно.

Внизу на верхней диаграмме результаты теста на случайный доступ, который более реалистично отражает реальную работу с устройством. И здесь UASP вносит серьёзный вклад. Случайные чтения ускоряются на 35%, случайные записи — на 20 %.

Более того, с UASP сократилось даже энергопотребление устройства с 5,29 до 4,87 ватта (на 8 %).

Проверить данные и методологию можно в этом репозитории turing-pi-cluster.

И не забывайте подключать устройства USB 3.0 в синие порты на Raspberry Pi 4, а не в чёрный порт USB 2.0, иначе вы не получите никакого выигрыша в производительности, напоминает автор.

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий