Данные, которые необходимо знать об ARM для переноса кода приложений.

1. Введение
Архитектура Advanced RISC Machines или ARM получила широкое распространение в вычислительных системах за последнее десятилетие. Благодаря встроенным в архитектуру ARM возможностям, ARM были впервые применены в мобильных телефонах, планшетах, приставках, умных телевизорах, носимых электронных устройствах и специальных аппаратных устройствах, таких как IOT-устройства, в качестве их микроконтроллеров или миникомпьютеров. Низкое энергопотребление и уменьшенное тепловыделение позволили им позже найти широкое применение и в вычислительной сфере.

Чем ARM отличается от X86_64
Существующие X86_64, широко используемые в настольных компьютерах, ноутбуках, серверах и других вычислительных инфраструктурах общего назначения, произошли от традиционных микропроцессоров 8085 и 8086. Основное различие между X86 (Intel) и ARM заключается в том, что x86 основан на CISC (Complex Instruction Set Computing), а ARM основан на RISC (Reduced Instruction Set Computing).

ARM на AWS
AWS – один из первых последователей архитектуры ARM в своем потоке вычислительных предложений (AWS EC2). AWS разработала собственное семейство процессоров Gravition, основанное на архитектуре ARM. Процессоры AWS Graviton разработаны для обеспечения наилучшей ценовой производительности. AWS сделала дальнейшее усовершенствование, представив Graviton-2 с 40% улучшением производительности по сравнению с семейством процессоров X86. Процессоры Graviton2 созданы AWS на заказ с использованием 64-битных ядер Arm Neoverse. Все процессоры Graviton включают выделенные ядра и кэш для каждого vCPU, а также дополнительные функции безопасности, предоставляемые системой AWS Nitro System; процессоры Graviton2 добавляют поддержку постоянного шифрования памяти.

Новейшая технология на базе ARM в AWS

Семейство экземпляров на базе Graviton-3 (g7) находится в режиме предварительного просмотра, и ожидается, что его производительность будет на 25% выше, чем у семейства Gravition (g6). Повышение производительности будет зависеть от характера рабочей нагрузки, более высокие улучшения ожидаются в Machine Learning (ML) и криптографической нагрузке из-за большего количества плавающих точек. Память DDR5 в Graviton-3 дополнит улучшение производительности.
Читайте подробности на https://aws.amazon.com/blogs/aws/join-the-preview-amazon-ec2-c7g-instances-powered-by-new-aws-graviton3-processors/.

Сервисы AWS используют ARM (Гравитон) за капотом
Множество управляемых сервисов AWS используют процессор Graviton за кулисами, включая Amazon Aurora, Amazon ElastiCache, Amazon EMR, AWS Lambda и AWS Fargate.

Возможности ARM в AWS EC2
AWS добавила процессоры Gravition на базе серии “g” в семейство AWS EC2, чтобы расширить выбор моделей экземпляров к 2019 году. Это предоставило гибкость многим клиентам для изучения возможностей ARM и повышения производительности. Инстансы Graviton доступны в большинстве распространенных семейств инстансов, таких как “tg” для разрывных инстансов общего назначения, “mg” для рабочих нагрузок общего назначения, “cg” для вычислительно-интенсивных рабочих нагрузок, “rg” для рабочих нагрузок с интенсивным использованием памяти, “ig” для рабочих нагрузок с интенсивным использованием хранилища.

Программы, доступные в ARM
Существует множество языков программирования с поддержкой ARM, что позволяет расширить возможности вашей прикладной платформы. Последние версии этих языков имеют пакеты/библиотеки поддержки ARM, ниже приведен список поддерживаемых версий некоторых из этих языков программирования.

Ссылка: – https://segmentfault.com/a/1190000041272174/en

Приложения, уже разработанные для X86_64, могут быть не совсем точно перенесены на ARM, для этого необходимо обновить пакеты, в идеале – перекомпилировать исходный код либо для мультиархитектуры, либо только для ARM. Если код вашего приложения был разработан недавно с использованием последней версии языка, возможно, он уже обладает возможностями, которые могут быть использованы непосредственно на тестовом стенде с последующей проверкой на вменяемость.

Существуют также сторонние решения для перекомпиляции,

AWS имеет программу Graviton Ready, которая проверяет программные продукты, созданные ее партнерами, которые интегрируются с определенными сервисами, такими как AWS Graviton.
Подробности на:- https://aws.amazon.com/blogs/apn/introducing-the-aws-graviton-ready-program-for-graviton-enabled-software-products/

Операционная система для ARM,
Чтобы запустить ваш код, вам также необходима операционная система (платформа), поддерживающая ARM. Существующая X86_64-битная операционная система не сможет запустить ARM-версию кода, поэтому вам нужна соответствующая ARM-версия операционной системы. Большинство дистрибутивов Linux имеют поддержку ARM в своих последних версиях, вот некоторые из них Ubuntu 20.04, Red Hat Enterprise Linux 7.4 для ARM, Debian GNU/Linux 9 поддерживает, Fedora, Linaro, OpenSUSE.

Движки баз данных, доступные в ARM
Большинство популярных технологий баз данных с открытым исходным кодом, таких как MySQL, PostGreSQL и MariaDB, уже имеют ARM-версию. ARM уже доказал свою более высокую производительность по сравнению с архитектурой X86_64, и базы данных являются одной из технологий, которые смогут воспользоваться этим преимуществом. Бенчмаркинг производительности, проведенный с Intel и ARM для рабочих нагрузок баз данных, показал значительное преимущество в производительности при работе с высоким уровнем параллелизма.

Отчет о бенчмаркинге производительности базы данных доступен на сайте https://mysqlonarm.github.io/MySQL-on-x86-vs-ARM/.

MySQL:- MySQL 8.0 поддерживает ARM на операционных системах Oracle Linux 8 / Red Hat Enterprise Linux 8 / CentOS 8. MySQL 8.0 также имеет образ Docker, поддерживаемый на OracleLinux в архитектуре ARM.

PostGreSQL:- 13, 12.3 & выше поддерживает процессор на базе ARM в различных платформах операционных систем.
Множество докер-образов PostGreSQL доступны в данном репозитории: -https://hub.docker.com/_/postgres?tab=tags.

MariaDB: MariaDB Enterprise Server (10.2-10.6) поддерживает ARM64.
https://mysqlonarm.github.io/

AWS Managed Database в ARM.
При развертывании соответствующих поддерживаемых движков баз данных в AWS RDS, экземпляры БД на базе Graviton-2 доступны наряду с экземплярами на базе Intel.

На приведенной выше схеме db.m5.16xlarge – это экземпляр базы данных с архитектурой X86, а db.m6g.large – с архитектурой ARM (Graviton-2). Хотя выбор экземпляра – это всего лишь вопрос выбора, но существуют фундаментальные различия между тем, как работают обе архитектуры.

Перенос архитектуры X86 на Гравитон-2
Перенос экземпляров БД на Гравитон-2 – это довольно простая задача, учитывая нулевые изменения в экосистеме, необходимые на уровне приложений, коннекторов и базы данных.
Пожалуйста, перейдите по данной ссылке для ознакомления с шагами миграции БД.
https://aws.amazon.com/blogs/database/key-considerations-in-moving-to-graviton2-for-amazon-rds-and-amazon-aurora-databases/

Контейнерная платформа на ARM
Поскольку большинство дистрибутивов Linux имеют ARM, контейнерная платформа обладает большей гибкостью при переходе на ARM. Как было показано выше, бессерверная модель контейнерных сервисов AWS, Fargate использует основанные на ARM экземпляры EC2 за сценой для раскрутки вычислительных ресурсов для ваших задач.
В обоих управляемых контейнерных службах AWS (ECS и EKS) вы можете использовать экземпляры на базе Graviton-2 в своем контейнерном кластере.

На приведенной выше диаграмме при создании кластера ECS вы можете выбрать тип экземпляра “g”. Аналогично, при создании NodeGroup в кластере EKS вы можете выбрать Amazon Linux 2 ARM или Bottlerocket ARM 64 для систем на базе Graviton-2.

Запуск смеси X86 и Гравитон на кластере ECS

https://aws.amazon.com/blogs/compute/supporting-aws-graviton2-and-x86-instance-types-in-the-same-auto-scaling-group/
https://aws.amazon.com/blogs/compute/how-to-quickly-setup-an-experimental-environment-to-run-containers-on-x86-and-aws-graviton2-based-amazon-ec2-instances-effort-to-port-a-container-based-application-from-x86-to-graviton2/

Подход к переходу на ARM

Для повышения производительности большинство прикладных кодов могут быть перенесены/перекомпилированы в ARM из существующей кодовой базы, не существует жестких правил по переносу/переносу прикладного кода, они полностью зависят от приоритетов заказчика. Ниже приведены некоторые из этих подходов к внедрению

Вывод

Вычислительное пространство переполнено преимуществами производительности и экономичности архитектуры на базе ARM. Программные приложения также широко внедряют эти изменения. Пришло время конечным клиентам и их бизнес-приложениям внедрить эти производительные вычислительные инфраструктуры.

Оцените статью
Procodings.ru
Добавить комментарий