В моем IOT-стеке Raspberry Pi с подключенным внешним диском служит в качестве сервера SAMBA. Перед установкой системы я хотел увидеть разницу в производительности различных дисков, их скорость чтения, а также скорость локальной и удаленной, через SAMBA, записи.
В этой статье кратко показано, как измерить и улучшить производительность HDD вашего сервера. Вы узнаете основные команды Linux для проведения измерений производительности дисков локально и по сети, а также узнаете о физических ограничениях скорости.
Технический контекст этой статьи — Raspberry Pi OS 2021-05-07. Все инструкции должны работать и с другими дистрибутивами Linux и более новыми версиями.
Эта статья первоначально появилась в моем блоге admantium.com.
- Измерения производительности
- Измерение 1: Внешний диск USB3.0 емкостью 1 ТБ
- Считывание производительности
- Производительность локальной записи
- Выполнение удаленной записи
- Измерение 2: 512 ГБ 2,5′ SATA с подключением USB3.0
- Производительность чтения
- Производительность локальной записи
- Выполнение удаленной записи
- Измерение 3: 512 ГБ 2,5′ SATA с подключением USB2.0
- Производительность чтения
- Производительность локальной записи
- Выполнение удаленной записи
- Сравнение
- Понимание падения производительности удаленной записи
- Резюме
Измерения производительности
Для тестирования скорости два основных инструмента — это Hdparm и [dd](https://en.wikipedia.org/wiki/Dd_(Unix):
Чтобы проверить производительность диска с помощью этих инструментов, их нужно вызывать определенным образом. С помощью hdparm мы проверим производительность чтения устройства и чтения кэша — команда hdparm -tT DEVICE_NAME
. С помощью dd мы запишем на диск 5 Гбайт данных — команда dd bs=10M count=500 if=/dev/zero of=PATH_TO_OUTPUT_FILE
. С помощью dd мы проведем тест локальной производительности диска, а также запишем данные на общий ресурс SAMBA для измерения производительности сети.
Измерение 1: Внешний диск USB3.0 емкостью 1 ТБ
Первый диск — это внешний диск Toshiba Canvio Basic 1TB USB3.0. Он работает на скорости 5400 об/мин.
Считывание производительности
sudo hdparm -tT /dev/sda
Timing cached reads: 1590 MB in 2.00 seconds = 795.37 MB/sec
Timing buffered disk reads: 256 MB in 3.03 seconds = 84.52 MB/sec
Производительность локальной записи
dd bs=10M count=500 if=/dev/zero of=/home/pi/test.bin
500+0 records in
500+0 records out
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 52.0089 s, 101 MB/s
Выполнение удаленной записи
dd bs=10M count=500 if=/dev/zero of=/Volumes/share/test.bin
500+0 records in
500+0 records out
5242880000 bytes transferred in 77.964918 secs (67246656 bytes/sec)
67MB/s
Измерение 2: 512 ГБ 2,5′ SATA с подключением USB3.0
Второй диск — это старый диск из ноутбука, Western Digital 512GB SATA 5400 WD5000BEVT. Он подключен с помощью разъема SATA-To-USB к порту USB3.0.
Производительность чтения
sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 1544 MB in 2.00 seconds = 772.31 MB/sec
Timing buffered disk reads: 258 MB in 3.00 seconds = 85.89 MB/sec
Производительность локальной записи
dd bs=10M count=500 if=/dev/zero of=/home/pi/test.bin
500+0 records in
500+0 records out
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 63.1331 s, 83.0 MB/s
Выполнение удаленной записи
dd bs=10M count=500 if=/dev/zero of=/run/user/1000/gvfs/smb-share:server=nexus,share=share/testbin
500+0 records in
500+0 records out
5242880000 bytes (5,2 GB, 4,9 GiB) copied, 123,337 s, 42,5 MB/s
Измерение 3: 512 ГБ 2,5′ SATA с подключением USB2.0
Это тот же диск, что и в измерении 2, но подключенный к порту USB2.0 на Raspberry Pi.
Производительность чтения
sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 1506 MB in 2.00 seconds = 753.58 MB/sec
Timing buffered disk reads: 98 MB in 3.01 seconds = 32.53 MB/sec
Производительность локальной записи
dd bs=10M count=500 if=/dev/zero of=/home/pi/test.bin
500+0 records in
500+0 records out
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 174.322 s, 30.1 MB/s
Выполнение удаленной записи
dd bs=10M count=500 if=/dev/zero of=/run/user/1000/gvfs/smb-share:server=nexus,share=share/testbin
^[[C500+0 records in
500+0 records out
5242880000 bytes (5,2 GB, 4,9 GiB) copied, 175,105 s, 29,9 MB/s
Сравнение
Давайте сравним все измерения.
Чтение | Запись (локальная) | Запись (удаленная) | |
---|---|---|---|
Внешний USB3.0 на 1 ТБ | 84 МБ/с | 101 МБ/с | 67 МБ/с |
512 ГБ SATA 5400 об/мин с подключением USB2.0 | 33 МБ/с | 30 МБ/с | 30 МБ/с |
512 ГБ SATA 5400 об/мин с подключением USB3.0 | 86 МБ/с | 83 МБ/с | 43 МБ/с |
Явным победителем является родной диск USB3.0, хотя он работает на той же скорости 5400 об/мин, он увеличивает скорость локальной записи на 21% и скорость удаленной записи на 55% по сравнению с диском SATA.
Понимание падения производительности удаленной записи
Теперь давайте посмотрим, почему скорость удаленной записи падает примерно на 33%. Теоретически доступные пределы скорости таковы:
- USB 2.0 53MB/s
- USB 3.0 500MB/s
- SATA3 550MB/s
В моей домашней сети я измерил скорость передачи данных необработанных пакетов на уровне 924 МБ/с.
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 1.08 GBytes 924 Mbits/sec sender
[ 5] 0.00-10.01 sec 1.07 GBytes 922 Mbits/sec receiver
Почему же я могу достичь только 67 МБ/с? Чтение различных тем о сетевом ресурсе SAMBA с Raspberry Pi выявило два факта: SAMBA добавляет значительные сетевые накладные расходы, и даже если доступен гигабитный Ethernet, пропускная способность делится между всеми подключенными устройствами. Наличие нескольких Raspberry Pi, подключенных и взаимодействующих друг с другом, влияет на общую производительность. Для повышения производительности другие рекомендуют более тонко настроить параметры SAMBA в используемом программном обеспечении, например, смотрите эту тему об улучшении производительности SAMBA в OpenMediaVault.
Резюме
При настройке общего ресурса SAMBA на Raspberry Pi важно использовать хорошо работающий диск. В этой статье было показано, как использовать два инструмента hdparm
и dd
для измерения скорости чтения и записи. Чтобы проверить скорость записи на общий ресурс SAMBA, можно просто записать данные на подключенный к SAMBA диск. Результаты очевидны: выделенный внешний диск быстрее, чем диск SATA с разъемом USB, и всегда предпочтительнее USB3.0, чем USB2.0. Наконец, не забудьте оптимизировать параметры SAMBA, чтобы еще больше повысить производительность.