В этом году Apple потрясла рынок десктопных процессоров чипом Apple M1 и устройствами на нём. Похожее событие произошло в мире облачных вычислений в прошлом году. AWS выпустили новый тип сервера на собственных ARM процессорах Graviton2. По заявлениям Amazon, соотношение производительности к цене у новых процессоров на 40% выше, чем у аналогов на x86. Ещё одно недавнее обновление - серверы Amazon RDS (облачный сервис, предоставляющий серверы баз данных) на Graviton2. Я запустил несколько бенчмарков и нагрузочный тест реального бэкенд приложения, чтобы проверить настолько ли хороши серверы на ARM процессорах и узнать какие проблемы совместимости могут возникнуть. Я сравнивал серверы типов t4g.small (ARM) и t3.small (x86) на AWS. На момент написания статьи цена за 1 час на x86 сервер составляет $0.0208, а на ARM сервер - $0.0168. Сервер на ARM на 20% дешевле. Сперва я провёл нагрузочный тест при помощи wrk, запустив на серверах свежую установку recap.dev Это шаблон docker-compose с 4 процессами. Веб-сервер, принимающий запросы и сохраняющий их в RabbitMQ и отдельный фоновый процесс, сохраняющий запросы группами по 1000 в PostgreSQL. Я запускал wrk на сервере t3.2xlarge, находящемся в том же регионе, используя следующую команду: Она непрерывно посылает запросы в течение 5 минут, используя 24 потока и 1000 HTTP соединений. Результат для сервера t4g.small (ARM): Для сервера t3.small (x86): Сервер на ARM обслужил на 27% больше запросов в секунду в среднем на 26% быстрее.  Затем я запустил несколько бенчмарков из набора тестов Phoronix. В тесте pts/compress-7zip-1.7.1 t4g.small (ARM) выдал 6833 MIPS, а сервер t3.small (x86) - 5029 MIPS. ARM сервер был производительнее на 35%. Сервер на ARM процессоре также завершил бенчмарк pts/c-ray быстрее более чем в 2 раза. 958 секунд ушло у сервера на x86 процессоре против 458 секунд у сервера с ARM процессором.  Я также запустил несколько тестов pts/ramspeed, измеряющих пропускную способность ОЗУ при выполнении различных операций. Тип бенчмарка t4g.small (ARM) t3.small (x86) Add/Integer     50000 МБ/c     13008 МБ/c   Copy/Integer     58650 МБ/c   11772 МБ/c   Scale/Integer     31753 МБ/c   11989 МБ/c   Triad/Integer     36869 МБ/c   12818 МБ/c   Average/Integer     44280 МБ/c   12314 МБ/c   Add/Floating Point     49775 МБ/c   12750 МБ/c   Copy/Floating Point     58749 МБ/c   11694 МБ/c   Scale/Floating Point     58721 МБ/c   11765 МБ/c   Triad/Floating Point     49667 МБ/c   12809 МБ/c   Average/Floating Point     54716 МБ/c   12260 МБ/c   Вкратце, ОЗУ на сервере t4g.small с процессором Graviton2 была быстрее от 3 до 5 раз. Если смотреть только на производительность, переход на ARM серверы это одни преимущества. Больше производительности за меньшие деньги. Безусловно, один из самых больших вопросов при переходе с одной архитектуры процессоров на другую это совместимость программного обеспечения. Некоторая часть ПО уже перекомпилирована для ARM процессоров. Например, Docker был доступен в форматах .rpm и .deb, как и большая часть образов (да, образы Docker требуют пересборки для разных архитектур). Однако, docker-compose не был скомпилирован для ARM процессоров, что вылилось в несколько часов сборки различных зависимостей из исходного кода. Скорее всего, ситуация улучшится в будущем, когда серверы на ARM станут более распространены. Сейчас, однако, в некоторых случаях, переход на ARM может принести больше затрат, чем преимуществ.  Зато серверы Amazon RDS на Graviton2 не требуют никакой настройки и позволяют получить все преимущества серверов на ARM процессорах без проблем с совместимостью. Ввиду преимуществ ARM процессоров мы также собрали Docker образы recap.dev для архитектур arm/v7 и arm64. Архитектор