В предыдущей публикации рассматривались преимущества использование ARM серверов для хостинг провайдеров. В этом посте рассмотрим практические варианты создания кластерного сервера на ARM процессоре и протестируем инстанс Amazon EC2 T4g работающий на процессоре ARM AWS Graviton2, посмотрим на что он способен.
Создание серверного кластера на Raspberry/Banana/Orange Pi
На данный момент существует множество различных вариантов сборки кластера на базе различных одноплатных компьютеров. Можно собрать самостоятельно или купить готовую коробку (CASE) для наполнения модулями CoM Raspberry Pi.
Кластер на Raspberry/Banana/Orange Pi
Для личных и исследовательских целей подобные кластеры имеют право на жизнь. Но для массового рынка такой подход не приемлем по следующим причинам:
- Малая производительность используемых ARM-процессоров.
- В большинстве случаем хранение данных только на eMMC или microSD.
- Большой набор лишней периферии, такой как модуль связи Wi-Fi и Bluetooth, порты видеовыхода HMDI и т.д., что приводит к лишней стоимости платы и увеличению энергопотребления.
- Невозможна плотная компоновка модулей.
- Большое количество лишних проводов для подключения линий электропитания и Ethernet.
Для решения выше перечисленных недостатков необходимо перейти на концепцию — Компьютер-на-Модуле (Computer on Module, CoM).
Компьютер на модуле (CoM)
Компьютер на модуле (CoM) – это плата, которая объединяет в себе основные элементы системы обработки данных и позволяет подключить их к несущей плате с помощью разъёмов или пайки. На такой плате размещается основной процессор, оперативная память, дополнительные модули чипы. Плата обычно содержит периферийные функции, а несущая плата позволяет реализовать специфические функции устройства, например, соединение с внешними устройствами посредством различных интерфейсов.
Компьютер на модуле (CoM)
Удобство использование CoM заключается в возможности создания своего дизайна для несущей платы. Разработка несущей платы существенно проще чем модуля CoM. На несущей плате можно развести модуль питания и коммутатор Ethernet, тем самым уменьшив габариты системы и отказаться от лишних проводов.
Подключение модуля CoM к несущей плате
Стартап miniNodes разрабатывает недорогие ARM сервера, предназначенные для небольших облачных сервисов, веб-сайтов и приложений Интернета вещей. Они разработали микро-сервер состоящий из несущей платы и 5 модулей Raspberry Pi 3 CoM. Несущая плата Carrier Board содержит встроенный гигабитный коммутатор, который обеспечивает подключение ко всем 5 модулям. С противоположной стороны платы размещен модуль питания для обеспечивания питание CoM. Каждый из вычислительных модулей также имеет отдельный переключатель включения/выключения питания. Модули Raspberry Pi CM3 + поставляются с 8 ГБ, 16 ГБ или 32 ГБ eMMC на борту, поэтому нет необходимости использовать SD-карты, как на обычных платах Raspberry Pi. Таким образом, при полной загрузке есть 5 узлов, состоящих из 4 ядер, 1 ГБ ОЗУ и до 32 ГБ eMMC каждый, всего 20 ядер, 5 ГБ ОЗУ и до 160 ГБ хранилища.
5 Node Raspberry Pi 3 CoM Carrier Board
Такой подход построения микро-серверов на базе Raspberry Pi безусловно хорош, но вряд ли будет серьезно воспринят бизнесом. Любой бизнес в первую очередь интересует длительность поддержки купленной системы, поэтому решения стартапов не вариант для бизнеса. Дополнительно, закрытость процессоров Broadcom для Raspberry Pi не добавляет популярности в этом сегменте рынка.
Блейд-сервер от Firefly на процессорах Rockchip
Среди доступных решений выделяются процессоры компании Rockchip. По сравнению с процессорами от других производителей, для процессоров Rockchip доступно больше драйверов под Linux и есть даташиты в публичном доступе. Компания Firefly разрабатывает модули CoM на процессорах Rockchip и комплектует из них блейд-серверы. В каталоге компании доступно 9 различных по производительности модулей CoM, которые можно использовать для комплектации сервера. Модули для подключения имеют стандартный интерфейс SODIMM.
Модули COM от компании Firefly
Компания разработала сервер Cluster Server R1 в 1U форм-факторе который может содержать до 11 модулей CoM.
Сервер Cluster Server R1
Сервер предназначен для запуска приложений на Linux, облачных игр, виртуальных рабочих столов, тестирования мобильных приложений (до 110 виртуальных телефонов на Android). Возможен запуск ОС: Linux и Android.
Для комплектации доступны модули CoM:
- RK3399(AI) Core Board (Core-3399-JD4): два ядра A72 + четыре ядра A53, частота до 1.8GHz
- RK3328 Core Board (Core-3328-JD4): четы ядра A53, частота до 1.5GHz
- RK1808(AI) Core Board (Core-1808-JD4): два ядра с A35, частота до 1.6GHz
На лицевой панели блейд-сервера размещено: 4 порта Gigabit Ethernet, HDMI, два порта USB2.0, OTG, дополнительно для модулей доступен 3.5-дюймовый жесткий диск SATA/SSD с горячей заменой, слот для SIM карт модуля 4G-LTE.
Лицевая панель сервера Cluster Server R1
Для управления узлами используется BMC (Baseboard Management Controller) с помощью которой можно управлять узлами: включать/выключать, удаленный доступ, мониторинг состояния, управление аппаратной конфигурацией.
В начале этого года была представлена вторая версия кластерного сервера — Cluster Server R2. Cluster Server R2 поставляется в 2U форм-факторе и содержит:
- 9 блейд-узлов (каждый узел содержит 8 модулей CoM).
- Два 3.5-дюймовых жестких дисков SATA/SSD.
- 4 порта Gigabit Ethernet.
- два порта USB 3.0, USB 2.0, порт HDMI.
Cluster Server Cluster Server R2
Кластерный север так же работает под управлением ОС: Android, Ubuntu или некоторых других дистрибутивов Linux. Варианты использования сервера: «облачный телефон», виртуальный рабочий стол, облачные игры, облачное хранилище, блокчейн, декодирование многоканального видео, и т. Д. Наличие AI (NPU-нейронный процессор) делает кластер похожим на Solidrun Janux GS31 Edge AI. Сервер, предназначенный для вывода в режиме реальном времени нескольких видеопотоков для мониторинга умных городов и инфраструктуры, интеллектуального корпоративного/промышленного видеонаблюдения, обнаружения, распознавания и классификации объектов, интеллектуального визуального анализа и т. д.
Что можно запустить на ARM процессоре?
Запуск приложений с помощью Docker и Kubernetes давно стал де-факто стандартом для Linux. Поэтому рассмотрим какие наиболее популярные контейнеры можно запустить под ARM:
- Portainer.io — управление и мониторинг контейнерами с помощью web-интерфейса.
- OpenVPN — самый популярный бесплатный VPN сервер
- SoftEther VPN — мультипротокольный VPN-сервер с графическим интересом под Windows.
- Базы данных — все официальные Docker-образы так же собраны для ARM архитектуры: PostgreSQL, Mariadb, MongoDB.
- Nginx-proxy — Nginx прокси-сервер, образ на базе Alpine
- Traefik — обратный прокси-сервер, альтернатива Nginx
- WordPress — популярная CMS-система
- Elasticsearch — поисковая система на Java
- Asterisk PBX — компьютерная телефония (в том числе, VoIP) с открытым исходным кодом от компании Digium
- Zabbix — система мониторинга и отслеживания статусов различных сервисов компьютерной сети, серверов и сетевого оборудования
Отдельно необходимо отметить проект linuxserver.io, которые собирает контейнеры на базе наиболее популярных приложения для Linux, сборки готовятся и для архитектуры ARM. Наиболее популярные приложений для Linux представлены в виде контейнеров для ARM-систем, поэтому можно уже начинать тестировать.
Тестирование VPS на AWS Graviton2
Amazon для тестирования предоставляет инстансы на базе процессора ARM AWS Graviton2. Это отличная возможность бесплатно протестировать ПО на совместимость с ARM архитектурой и просто получить опыт работы, эксплуатации системы на ARM процессоре. Бесплатно предоставляется инстанс t4g.micro до 30 июня 2021 года в режиме 24×7. Для тестирования достаточно зарегистрироваться и развернуть инстанс на Ubuntu Server 20.04 LTS.
Конфигурация инстанса t4g.micro:
- 2 vCPUs 2.5 GHz
- 1 GiB memory
- 8 GB SSD
Инстанс t4g.micro доступен для развертывания на различных площадках. Ближайшая к нам площадка Europe (Frankfurt) eu-central-1, пинг от Питера в среднем составляет 78 ms.
Команда lscpu выдает следующую информацию:
ubuntu@host:~$ lscpu
Architecture: aarch64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
...
Vendor ID: ARM
Model: 1
Model name: Neoverse-N1
Stepping: r3p1
BogoMIPS: 243.75
L1d cache: 128 KiB
L1i cache: 128 KiB
L2 cache: 2 MiB
L3 cache: 32 MiB
NUMA node0 CPU(s): 0,1
...
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimdd
p ssbs
“Железо”:
root@host:/home/ubuntu# inxi -b
System: Host: host Kernel: 5.4.0-1038-aws aarch64 bits: 64 Console: tty 1
Distro: Ubuntu 20.04.2 LTS (Focal Fossa)
Machine: Type: Other-vm? System: Amazon EC2 product: t4g.micro v: N/A serial: ec21ba8c-f1b0-3f47-74e0-c648a84383c4
Mobo: Amazon EC2 model: N/A serial: N/A UEFI: Amazon EC2 v: 1.0 date: 11/1/2018
CPU: Dual Core: Model N/A type: MCP speed: 0
Graphics: Message: No Device data found.
Display: server: No display server data found. Headless machine? tty: 130x42
Message: Advanced graphics data unavailable for root.
Network: Device-1: Amazon.com Elastic Network Adapter driver: ena
Drives: Local Storage: total: 8.00 GiB used: 2.52 GiB (31.5%)
Info: Processes: 145 Uptime: 2d 23h 46m Memory: 952.5 MiB used: 336.2 MiB (35.3%) Shell: bash inxi: 3.0.38
Тест CPU
Тестируем процессор sysbench’ем:
root@host:/home/ubuntu# sysbench --test=cpu --cpu-max-prime=20000 --num-threads=1 run
sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Prime numbers limit: 20000
...
CPU speed:
events per second: 1097.02
General statistics:
total time: 10.0002s
total number of events: 10972
Latency (ms):
min: 0.91
avg: 0.91
max: 0.95
95th percentile: 0.92
sum: 9998.11
Threads fairness:
events (avg/stddev): 10972.0000/0.00
execution time (avg/stddev): 9.9981/0.00
Тест ОЗУ:
root@host:/home/ubuntu# sysbench --test=memory --num-threads=4 --memory-total-size=512MB run
sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)
...
Total operations: 524288 (3814836.42 per second)
512.00 MiB transferred (3725.43 MiB/sec)
General statistics:
total time: 0.1360s
total number of events: 524288
Latency (ms):
min: 0.00
avg: 0.00
max: 8.00
95th percentile: 0.00
sum: 315.89
Тест диска
Посмотрим что покажет dd. Скорость до полноценного SSD недотягивает, но уже полноценный SATA:
root@home:/home/ubuntu# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
16384+0 records in
16384+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 7.03664 s, 153 MB/s
root@host:/home/ubuntu# 7za b
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs LE)
LE
CPU Freq: - - - - - - 512000000 - -
RAM size: 952 MB, # CPU hardware threads: 2
RAM usage: 441 MB, # Benchmark threads: 2
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 6957 167 4054 6768 | 8353 199 358 713
23: 757 172 448 772 | 22509 200 975 1948
24: 7073 185 4118 7606 | 80370 200 3535 7056
25: 6831 185 4227 7800 | 77906 199 3480 6934
---------------------------------- | ------------------------------
Avr: 177 3212 5736 | 199 2087 4163
Tot: 188 2649 4950
Сравнение стоимости инстанса t4g.micro с VPS на x86
Воспользуемся калькулятором calculator.aws и рассчитаем на сколько ARM дешевле x86 VPS на AWS. Расчет будем производить для площадки Europe (Frankfurt) eu-central-1. Ближайшей аналог x86 по характеристикам это инстанс t2.micro.
Конфигурация инстанса t2.micro:
- 1 vCPUs
- 1 GiB memory
- 8 GB SSD
Допустим инстанс будет работать 365 дней * 24 часа * 1 год = 8760.0000 часов.
Ежемесячный платеж за аренду инстанса по требованию без учета трафика составит:
- t4g.micro (ARM): 5.33 USD ~ 400 р. (по курсу 1$ = 75 р.);
- t2.micro (x86): 7.96 USD ~ 597 р. (по курсу 1$ = 75 р.).
Получает что сервер на ARM стоит на 33% дешевле аналога на x86. Отдельно необходимо рассчитывать объем сетевого трафика, стоимость не зависит от типа архитектуры инстанса. Первый гигабайт трафика в месяц будет бесплатным, далее объем до 10 ТБ оплачивается по цене $0.09 за каждый Гб. Входящий трафик не тарифицируется. Если будем исходить из средней сетевой нагрузки в 150 Гб исходящего трафика в месяц, то стоимость за трафик будет:
- 150 Гб * $0.09 = $13.5 ~ 1000 р. (по курсу 1$ = 75 р.);
В итоге VPS инстанс t4g.micro (ARM) с объемом трафика в 150 Гб в месяц будет стоить — 1 400 р./месяц.
Если для сравнения взять VPS от VDSina.ru за 330 р./месяц (1 ядро, 30 ГБ NVMe, 32 ТБ трафика), то для конкурентного преимущества серверам на ARM еще расти и расти.
Вывод: Отсутствие нативного ПО под ARM архитектуру еще долго будет останавливающим фактором массового перехода. Но так или иначе частичный переход на ARM сервера это уже тренд. Основными двигателями перехода выступают три мощных фактора. Первый фактор — независимость от основных поставщиков процессоров x86. Можно выбрать решение максимально подходящее под себя. Второй фактор — возможность максимальной «оптимизации под себя», исключение всего лишнего и добавление специализированных блоков, таких как NPU, FPGA, и т.д. Третий фактор — открытость и доступность Linux. Если сравнивать ARM сервера для массового потребительского сектора, то в этом сегменте еще очень долго будет господствовать x86 архитектура. Скорее всего мы увидим создание нового сегмент рынка для специальных задач ориентированных на преимущества ARM архитектуры, например сервера с FPGA модулями или NPU.
На правах рекламы
Наша компания предлагает в аренду серверы с современными процессорами от Intel и AMD под самые разнообразные задачи. Эпичные серверы — это VDS с AMD EPYC, частота ядра CPU до 3.4 GHz. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe. Создайте свой собственный тариф самостоятельно в пару кликов!