Предварительный просмотр NanoPi R5S — Часть 2: Ubuntu 20.04 (FriendlyCore)


Мы начали обзор NanoPi R5S с распаковки, разборки, тестирования предустановленного FriendlyWrt на основе OpenWrt и некоторых тестов iperf3 на интерфейсах 2,5GbE, результаты которых были совсем не воодушевляющими. При дальнейшем тестировании мы переключились на образ FriendlyCore на основе Ubuntu 20.04, так как мы больше знакомы с операционными системами на основе Debian, а некоторые инструменты не будут работать на OpenWrt. Обратите внимание, что производительность все еще не совсем оптимальна, и именно поэтому мы называем это предварительным просмотром, поскольку, в ближайшие несколько месяцев, цифры должны улучшиться, поскольку все больше людей настраивают программное обеспечение.

Оптимизация OpenWrt?

Но, перейдя к Ubuntu, мы установили обновленную версию FriendlyWrt, так как представители FriendElec сказали нам, что они добавили некоторые оптимизации:

Мы внесли некоторые оптимизации в новый образ, такие как настройки прерывания сетевой карты и поддержку разгрузки…

Итак, мы скачали «rk3568-eflasher-friendlywrt-20220526.img.gz», найденный на Google Диске, сохранили его на карту microSD с помощью USBImager и загрузили на роутер.

Он автоматически записал изображение на флэш-память eMMC. Если вы подключите монитор, вы сможете следить за результатом. Как только это будет сделано, извлеките карту microSD и выключите и снова включите маршрутизатор.

Вы можете проверить состояние, подключив монитор HDMI (как показано выше) или проверив светодиоды на устройстве. Это очень быстро, и установка на флэш-память eMMC занимает всего несколько секунд.

Основные изменения были внесены в файл 40-net-smp-affinity. В предустановленном FriendlyWrt это выглядит так:

Хотя новый файл 40-net-smp-affinity действительно отличается:

Вилли Тарро объясняет изменения, внесенные в интерфейс eth1:

Речь идет о RPS  …. т.е. они получают IRQ на ядре 2 и перераспределяют входящий трафик на ядра 0,1,3. Это правильный способ использования RPS. Однако вам придется вручную назначать iperf и следить за первым ядром, которое насыщается. Если он сначала насыщает ядро ​​​​2 с помощью ksoftirqd, убедитесь, что iperf работает на любом из остальных 3. Если ядро ​​​​2 немного простаивает, попробуйте назначить на него iperf. Если при его включении всплывает ksoftirqd, то они мешают друг другу, и вам лучше изменить настройку RPS, чтобы освободить еще одно ядро ​​и использовать его для iperf.

Мы не пробовали этот метод до тестирования и перехода на Ubuntu, и наши результаты были еще хуже с новым образом FriendlyWrt:

Так что это надо будет пересмотреть.

Установка M.2 NVMe SSD в NanoPi R5S

На днях мы приобрели APACER AS2280 (AP256GAS2280P4-1) PCIe Gen 3.0 x4 SSD, который может обеспечить скорость последовательного чтения до 1800 МБ/с и скорость последовательной записи до 1100 МБ/с на подходящем оборудовании.

Установка проста, так как нам просто нужно было ослабить четыре винта, чтобы снять нижнюю крышку, установить SSD и закрепить его прилагаемым винтом.

Установка Ubuntu 20.04 FriendlyCore на NanoPi R5S

Сначала мы попытались установить FriendlyCore, используя образ eflasher.

Все выглядело хорошо, поэтому мы перезапустили роутер, но потом заметили, что интерфейс WAN не отображается на коммутаторе TP-Link, а горит только индикатор питания (бывает, что последнее нормально для образа FriendlyCore/Ubuntu) . Мы попробовали еще раз, зайдя в настройки пользовательского интерфейса eflasher, нажав «Готово», но по-прежнему безуспешно.

Вместо этого мы загрузили образ «SD», чтобы загрузиться непосредственно с карты microSD и запустить оттуда ОС. Это работает нормально. Если вы собираетесь использовать NanoPi R5S для нескольких целей и ожидаете среду рабочего стола в образе Ubuntu 20.04, вы будете разочарованы, поскольку выход HDMI в настоящее время используется только для доступа к терминалу.

Информация о системе FriendlyCore

Вы найдете журнал загрузки на CNX Software Pastebin. Мы вошли в систему с помощью SSH, используя учетные данные pi/pi (имя пользователя/пароль), и обновили систему до последних пакетов с помощью:

Давайте запустим несколько команд, чтобы получить информацию о системе:

Все выглядит хорошо, за исключением того, что диск NVMe не был смонтирован автоматически. Давайте найдем больше деталей с inxi:

Работает только порт eth0 WAN, а порты eth1/eth2 2.5GbE отключены и вообще не настроены. Похоже, что FriendlyElec в основном фокусируется на образе FriendlyWrt, и нам сказали, что оптимизация еще не была реализована на FriendlyCore, поэтому большинству людей, вероятно, следует использовать вместо него FriendlyWrt, так как будет проще настроить параметры сети и маршрутизатора. Мы видим, что SSD Apacer AS2280P4 определяется, и оказывается, что он не отформатирован из коробки, поэтому мы просто отформатировали его с помощью mkfs.ext4.

Сравнительный анализ NanoPi R5S

Давайте запустим SBC Bench на маршрутизаторе, чтобы протестировать ЦП и, возможно, найти некоторые проблемы:

Мы запустили его почти сразу после загрузки, поэтому вывод dmesg должен быть полным (см. загрузку ранее в этом предварительном просмотре/обзоре), но в сценарии отсутствует некоторая информация из него. Полный вывод скрипта sbc-bench.sh можно найти на pastebin, и мы заметно видим, что объявленная частота «1992» МГц протестирована как 1845 МГц, поэтому здесь возможна некоторая оптимизация.

7zip по-прежнему быстрее, чем на маршрутизаторе NanoPi R2S (3871), или примерно на 23% быстрее, в то время как AES-256-CBC 16 КБ примерно на 22% быстрее ( 704 872,45 против 861 334,19 кГц/с).

Тестирование NVMe

Мы тестировали NVMe SSD три раза с iozone 3, один раз с файлом размером 100 МБ:

затем файл размером 500 МБ:

и, наконец, файл размером 1 ГБ:

Результаты более или менее согласуются во всех трех тестах без значительных изменений, и в последнем мы получили около 380 МБ/с для чтения и записи, что значительно ниже заявленной скорости записи/чтения SSD и результатов для ODROID-M1, но это из-за интерфейса PCIe 2.0 x1, используемого в этой конструкции, вместо интерфейса PCIe Gen 3.0 x2, используемого в плате Hardkernel.

Вот вывод lspci для справки:

Конфигурация интерфейсов 2.5GbE и тестирование

Поскольку из коробки настроен только интерфейс eth0 Gigabit Ethernet «WAN», нам нужно настроить два порта 2.5GbE вручную. Мы использовали тот же тестовый стенд, что и в первой части обзора с FriendlyWrt, а именно ноутбук Ubuntu 20.04 с USB-ключом Realtek RTL8156BG USB 3.0 на 2,5GbE, подключенный к eth1, и мини-ПК UP Xtreme i11, подключенный к eth2. Вместо использования мостового интерфейса, как в FriendlyWrt, мы настроили две разные подсети: 192.168.2.0 для eth1 и 192.168.3.0 для eth2.

Давайте создадим два новых файла в /etc/network/interfaces.d/:

  • eth1
  • eth2

Теперь установите DHCP-сервер

отредактируем файл /etc/dhcp/dhcpd.conf с двумя нашими подсетями:

… перед перезапуском DHCP-сервера:

На этом этапе ноутбук и мини-ПК должны получить свой IP-адрес от NanoPi R5S в соответствующих подсетях. Мы можем начать тестирование интерфейсов:

Загрузка iperf3 (Rx с точки зрения R5S) с использованием eth1, подключенного к ноутбуку:

Результат немного медленнее, чем у нас (1,85 Гбит/с) в OpenWrt, и есть повторные передачи. Мы также мониторили систему с помощью sbc-bench.sh во время переноса:

Во время теста система работает на максимальной заявленной частоте, и мы не видим здесь каких-либо явных узких мест.

Мы также можем проверить некоторую информацию и статистику с помощью ethtool:

Мы получили rx_mac_missed.

Давайте сделаем это в обратном порядке (Tx):

Выглядит намного лучше, чем в OpenWrt (1,12 Гбит/с).

Процент IRQ намного ниже, но мы полагаем, что это нормально для Tx.

Переключимся на eth2, подключенный к UP Xtreme i11:

Круто! Это первый раз, когда мы получаем приличную передачу 2,35 Гбит/с, так что есть надежда!

Если мы не ошибаемся, 25% IRQ должны означать, что ядро ​​​​полностью используется для их обработки.

Попробуем Тх:

1,59 Гбит/с. Не идеально, но все же лучше, чем в OpenWrt.

Опять же, ЦП работает на полной скорости и далеко не на 100% загружен, поэтому узкие места должны быть где-то еще. Мы снова можем проверить информацию и статистику eth2 с помощью ethtool.

У нас есть еще rx_mac_missed. Таким образом, будут некоторые настройки для повышения производительности, но, исходя из нашего опыта с RTL8156B, настройка параметров действительно сложна, и опытные люди, похоже, не согласны с тем, что нужно настраивать, речь идет об инженерах Realtek, работающих над драйверами RTL8156/8125, в сравнении с обычными читателями, которые являются экспертами в области сетей.

Настройка NAT между двумя интерфейсами 2.5GbE

Поскольку интерфейсы 2.5GbE работают не оптимально с iperf3, мы не стали тестировать производительность маршрутизатора в FriendlyWrt, но несколько человек все же спросили. Итак, мы покажем, как мы настроили NAT в Ubuntu 20.04, и, как и раньше, проверим производительность NAT, имея в виду, что через несколько недель или месяцев она, безусловно, улучшится.

Нам нужно включить переадресацию IP и NAT. Мы использовали инструкции, адаптированные из поста на networkreverse .

Отредактируйте /etc/sysctl.conf , чтобы включить переадресацию IP (раскомментируйте следующую строку):

Примените изменения:

Теперь включим NAT:

Теперь мы можем пропинговать UP Xtreme i11 в подсети 192.168.3.0 с нашего ноутбука в подсети 192.168.2.0:

Если вы хотите сделать изменения постоянными:

Давайте попробуем iperf3 между UP Xtreme i11 и нашим ноутбуком с маршрутизацией данных через маршрутизатор NanoPi R5S.

768 Мбит/с в одну сторону и 937 Мбит/с в другую.

Мониторинг с помощью sbc-bench.sh показывает, что процессор работает на частоте 1992 МГц (или 1845 МГц на самом деле), и снова 25% IRQ должны означать, что одно ядро ​​полностью используется для обработки IRQ.

Команда mpstat показывает, что это должно обрабатываться ядром #0.

И это можно подтвердить, используя top и htop.

На сегодня, пожалуй, остановимся на этом. Оптимизация должна включать в себя изменение прошивки, чтобы ядра Rockchip работали на частоте 1992 МГц, и настройку различных параметров, связанных с настройками PCIe и Ethernet, с большинством которых мы не знакомы (пока). Мы также проверим энергопотребление, как только получим настенный измеритель мощности, который заказали несколько дней назад.

Нам хотелось бы поблагодарить FriendlyElec за отправку образцов мини-маршрутизатора NanoPi R5S для обзора. Роутер в металлическом корпусе можно купить на сайте FriendlyElec за 75 долларов, а плату можно купить всего за 59 долларов. Маршрутизатор также можно найти на Aliexpress у нескольких продавцов, некоторые из которых также продают версию с 4 ГБ ОЗУ, что странно, поскольку в настоящее время FriendlyElec продает только модель с 2 ГБ ОЗУ.

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

5 1 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments