Graviton 2 — переходим на светлую сторону,
Процессоры ARM уже не первый год на AWS, а теперь ещё и в Макбуках (которые тоже на AWS :) ). Многие наверняка слышали про них, но, как это часто бывает, придерживаются фразы "Ну, вот, скажи мне — где я, а где ARM?!?"
И действительно, мало выбрать новую виртуалку, нужно ж ещё и разбираться, что-то там пересобирать, а вдруг что не зарабоает, ну его нафиг, овчинка выделки не стоит.
Далее мой личный опыт и впечатления от работы
Возьмём популярный вариант — у вас что-то крутится в
К примеру, у вас использовалась популярная виртуалка
Запустили, заходим, ставим докер привычным способом, например, для Amazon Linux 2:
Docker поставили, пока никаких отличий.
Будем ставить
https://github.com/docker/compose/issues/6831
Заходим, ставим лайк, чтобы таки когда-нибудь получить официальную версию. Но, понятно, проблема насущная и кто-то наверняка её решил. Всё верно, можно использовать докер для докера!
И получаем неофициальную, но вполне рабочую версию
Дальше проходимся по сервисам, которые у вас поднимаются в
Для не столь крупных проектов может не быть
Для наглядности поставим популярные вещи под ARM —
Если под ваш какой-то проект нет ARM-варианта — что ж, значит придётся обождать. Однако часто выясняется, что от чего-то можно безболезненно избавиться и всё же попробовать.
Отдельно скажу, что у вышеупомянутой неофициальной версии
#ARM #Graviton
часть 1Процессоры ARM уже не первый год на AWS, а теперь ещё и в Макбуках (которые тоже на AWS :) ). Многие наверняка слышали про них, но, как это часто бывает, придерживаются фразы "Ну, вот, скажи мне — где я, а где ARM?!?"
И действительно, мало выбрать новую виртуалку, нужно ж ещё и разбираться, что-то там пересобирать, а вдруг что не зарабоает, ну его нафиг, овчинка выделки не стоит.
Далее мой личный опыт и впечатления от работы
c6g/m6g/t4g в, так сказать, "повседневной жизни" условного девопса или админа. Спойлер — овчинка стоит.Возьмём популярный вариант — у вас что-то крутится в
docker-compose, например, Node.js, Mongo или какой-нибудь Jenkins. Или даже возьмём всё вместе. Итак, что нужно будет сделать, чтобы пощупать гравитончик?К примеру, у вас использовалась популярная виртуалка
t3.medium. Значит для теста поднимаем t4g.medium - условный аналог на ARM.Запустили, заходим, ставим докер привычным способом, например, для Amazon Linux 2:
yes | sudo amazon-linux-extras install dockerDocker поставили, пока никаких отличий.
Будем ставить
docker-compose, гуглим и узнаём про первый облом ARM — а вот и нет такого:https://github.com/docker/compose/issues/6831
Заходим, ставим лайк, чтобы таки когда-нибудь получить официальную версию. Но, понятно, проблема насущная и кто-то наверняка её решил. Всё верно, можно использовать докер для докера!
sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composeИ получаем неофициальную, но вполне рабочую версию
docker-compose под ARM.Дальше проходимся по сервисам, которые у вас поднимаются в
docker-compose. Если это что-то известное/популярное, например, упомянутые Node.js или Монга, то проблем, скорей всего, не будет – вообще ничего менять не придётся, т.к. у них вместе выложены докеры сразу под несколько платформ, в том числе под arm64. Оговорочку можно сделать лишь если у вас шибко старые версии, т.к. поддержка ARM появилась относительно недавно. Например, для Mongo версий 3.5 и древней поддержки ARM не будет, зато 3.6+ работает на ARM отлично.Для не столь крупных проектов может не быть
arm64 версий. Например, дефолтный репозиторий для Jenkins имеет образы лишь под amd64. Конечно, всегда можно пойти и собрать образ под arm64 самому, скачав исходники с GitHub. Это справедливо и для большого количества других open source проектов. Но погуглив часто можно найти готовое, в случае Jenkins это будет jenkins4eval/jenkins.Для наглядности поставим популярные вещи под ARM —
kubectl, eksctl, helm, kustomize:curl -o https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/arm64/kubectlcurl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_arm64.tar.gz" | tar xzcurl --silent --location https://get.helm.sh/helm-v3.5.4-linux-arm64.tar.gz | tar xz linux-arm64/helmcurl --silent --location https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v4.1.2/kustomize_v4.1.2_linux_arm64.tar.gz | tar xzЕсли под ваш какой-то проект нет ARM-варианта — что ж, значит придётся обождать. Однако часто выясняется, что от чего-то можно безболезненно избавиться и всё же попробовать.
Отдельно скажу, что у вышеупомянутой неофициальной версии
docker-compose под ARM есть некоторые проблемы — например, у меня с ней не заработал нормально jwilder/docker-gen для получения LetsEncrypt-овских сертификатов. Я не пробовал другие, используя сертификаты на ALB, однако возможность таких вещей стоит учесть. Но, всё же, в большинстве случаев (и точно, если это что-то популярное) никаких принципиальных моментов не возникает.#ARM #Graviton
GitHub
Release docker/compose image for armv7 / arm64v8 · Issue #6831 · docker/compose
Is your feature request related to a problem? Please describe. Using curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" &a...
Graviton 2 — переходим на светлую сторону,
Тесты ARM виртуалок в нагруженных приложениях не есть предмет данного поста - их можно найти в интернете или в официальном разделе:
https://aws.amazon.com/ec2/graviton/#Partner_Blogs
Здесь же, как было оглашено в первой части, рассмотрим "народные", то бишь популярные-недорогие типы виртуалок, обычно это 1-2 ядра и 1-4 ГБ памяти. В этой нише рулят
Однако в эту нишу недорогих виртуалок Graviton 2 добавил не только
Сеть
Кроме того стоит добавить, что у "полноценных" виртуалок ещё и более быстрая сеть. У
И да, если уж про сеть, то правильно добавить ещё одну "полноценную" виртуалку, попадающую в наш диапазон:
Стоимость
Сведём всё в одну таблицу:
Если отбросить морально устаревшие
Очень показателен нижний сегмент, где "полноценные" виртуалки расположились не равномерно внизу, как можно было бы предположить, а вполне себе тягаются с дешёвыми
Выводы
👉 Graviton 2 хорош. Не верьте на слово — попробуйте. Сделать это для простых вещей если не совсем просто, то точно не так сложно.
👉 Graviton 2 добавил в список "народных виртуалок" две полноценные и конкурентно недорогие виртуалки
#ARM #Graviton
часть 2Тесты ARM виртуалок в нагруженных приложениях не есть предмет данного поста - их можно найти в интернете или в официальном разделе:
https://aws.amazon.com/ec2/graviton/#Partner_Blogs
Здесь же, как было оглашено в первой части, рассмотрим "народные", то бишь популярные-недорогие типы виртуалок, обычно это 1-2 ядра и 1-4 ГБ памяти. В этой нише рулят
Tx виртуалки — с поправкой на поколения это t2, t3, t3a и присоединившаяся к ним t4g на Graviton 2. Это так называемый burstable-тип виртуалок, которые не предназначены для постоянной нагрузки и производительность которых падает до своего baseline уровня, ежели "бурсты" иссякают.Однако в эту нишу недорогих виртуалок Graviton 2 добавил не только
t4g, под вышеприведенные правила 1-2 ядра и 1-4 ГБ памяти попадают и две "полноценные" виртуалки (которые не "burstable") - c6g.medium и m6g.medium! Да, у них по одному ядру, но, во-первых, очень многие системы прозябают с минимальной загрузкой в единицы процентов, а, во-вторых, если нагрузка вдруг станет постоянной, то baseline этих Tx виртуалок убьёт производительность двух ядер в 5-10 раз, что даст кратное преимущества "полноценным виртуалкам".Сеть
Кроме того стоит добавить, что у "полноценных" виртуалок ещё и более быстрая сеть. У
Tx типа это до 5 Gbit (если не считать старую t2, где аморфное Low to Moderate условно обозначает "до 1 Gbit"), в то время как у c6g/m6g это "до 10 Gbit". И это просто видно в обычной работе - привычные операции с копированием файлов на другие виртуалки/S3/итп банально на глаз быстрей. У кого много таких операций, сразу заметит, что работать стало комфортней.И да, если уж про сеть, то правильно добавить ещё одну "полноценную" виртуалку, попадающую в наш диапазон:
c6gn.medium, у которой сетка ещё более быстрая — до 25 Gbit!Стоимость
Сведём всё в одну таблицу:
тип цена CPU RAM сеть baselinet2.micro $0.0116 1vCPU 1GB до 1 Gbit 10%t2.small $0.023 1vCPU 2GB до 1 Gbit 20%t2.medium $0.0464 2vCPU 4GB до 1 Gbit 20%t3.micro $0.0104 2vCPU 1GB до 5 Gbit 10%t3.small $0.0208 2vCPU 2GB до 5 Gbit 20%t3.medium $0.0416 2vCPU 4GB до 5 Gbit 20%t3a.micro $0.0094 2vCPU 1GB до 5 Gbit 10%t3a.small $0.0188 2vCPU 2GB до 5 Gbit 20%t3a.medium $0.0376 2vCPU 4GB до 5 Gbit 20%t4g.micro $0.0084 2vCPU 1GB до 5 Gbit 10%t4g.small $0.0168 2vCPU 2GB до 5 Gbit 20%t4g.medium $0.0336 2vCPU 4GB до 5 Gbit 20%c6g.medium $0.034 1vCPU 2GB до 10Gbit 100%m6g.medium $0.0385 1vCPU 4GB до 10Gbit 100%c6gn.medium $0.0432 1vCPU 2GB до 25Gbit 100%Если отбросить морально устаревшие
t2, которые дороже t3, а при этом медленней и отсортировать по возрастанию цены, то получаем следующую картину:тип цена CPU RAM сеть baselinet4g.micro $0.0084 2vCPU 1GB до 5 Gbit 10%t3a.micro $0.0094 2vCPU 1GB до 5 Gbit 10%t3.micro $0.0104 2vCPU 1GB до 5 Gbit 10%t4g.small $0.0168 2vCPU 2GB до 5 Gbit 20%t3a.small $0.0188 2vCPU 2GB до 5 Gbit 20%t3.small $0.0208 2vCPU 2GB до 5 Gbit 20%t4g.medium $0.0336 2vCPU 4GB до 5 Gbit 20%c6g.medium $0.034 1vCPU 2GB до 10Gbit 100%t3a.medium $0.0376 2vCPU 4GB до 5 Gbit 20%m6g.medium $0.0385 1vCPU 4GB до 10Gbit 100%t3.medium $0.0416 2vCPU 4GB до 5 Gbit 20%c6gn.medium $0.0432 1vCPU 2GB до 25Gbit 100%Очень показателен нижний сегмент, где "полноценные" виртуалки расположились не равномерно внизу, как можно было бы предположить, а вполне себе тягаются с дешёвыми
Tx!Выводы
👉 Graviton 2 хорош. Не верьте на слово — попробуйте. Сделать это для простых вещей если не совсем просто, то точно не так сложно.
👉 Graviton 2 добавил в список "народных виртуалок" две полноценные и конкурентно недорогие виртуалки
c6g.medium и m6g.medium. И если вы, как и я, раньше держали свои популярные повседневные вещи на t3/t3a small/medium, то очень стоит попробовать c6g.medium и m6g.medium. Я перевёл несколько проектов на оные и теперь радуюсь — как скорости работы, так и прайсу!#ARM #Graviton
Amazon
ARM Processor - AWS Graviton Processor - AWS
AWS Graviton processors deliver the best price performance for your cloud workloads, optimized for a range of general-purpose, compute, memory, and storage-intensive workloads.
ARM 64 GitHub Runners 🎉
https://github.blog/2024-06-03-arm64-on-github-actions-powering-faster-more-efficient-build-systems/
💰 Стоят на треть дешевле:
https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions#per-minute-rates-for-arm64-powered-larger-runners
⚠️ Пока лишь для Team/Enterprise планов. К концу года — остальным.
#GitHub #ARM #Sustainability
https://github.blog/2024-06-03-arm64-on-github-actions-powering-faster-more-efficient-build-systems/
💰 Стоят на треть дешевле:
https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions#per-minute-rates-for-arm64-powered-larger-runners
⚠️ Пока лишь для Team/Enterprise планов. К концу года — остальным.
#GitHub #ARM #Sustainability
The GitHub Blog
Arm64 on GitHub Actions: Powering faster, more efficient build systems
GitHub Actions now offers Arm-hosted runners with images built by Arm for developers to begin building on the latest and most sustainable processors on the market.
🔥15❤🔥1