AWS Notes
5.6K subscribers
470 photos
43 videos
10 files
2.84K links
AWS Notes — Amazon Web Services Educational and Information Channel

Chat: https://xn--r1a.website/aws_notes_chat

Contacts: @apple_rom, https://www.linkedin.com/in/roman-siewko/
Download Telegram
Graviton 2 — переходим на светлую сторону, часть 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 docker

Docker поставили, пока никаких отличий.

Будем ставить 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-compose
sudo 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/kubectl

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_arm64.tar.gz" | tar xz

curl --silent --location https://get.helm.sh/helm-v3.5.4-linux-arm64.tar.gz | tar xz linux-arm64/helm

curl --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
Graviton 2 — переходим на светлую сторону, часть 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 сеть    baseline
t2.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 сеть    baseline
t4g.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
Graviton 2 для Amazon ES:

https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-limits.html#ebsresource

Можно выбрать c6g/m6g/r6g/r6gd от large и выше. Если сравнить стоимость, то Graviton 2 получается на 10% дешевле:

c5.large.elasticsearch $0.125
c6g.large.elasticsearch $0.113
m5.large.elasticsearch $0.142
m6g.large.elasticsearch $0.128

#ES #Graviton
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Graviton4 + r8g instances 💪

https://aws.amazon.com/ec2/instance-types/r8g/

💥 +30% better compute performance than Graviton3
💥 enhanced security with always-on memory encryption
💥 dedicated caches for every vCPU
💥 support for pointer authentication
💥 DDR5-5600 memory

#EC2 #Graviton
🔥20👏1🆒1
​​Graviton4 R8g instances:

https://aws.amazon.com/blogs/aws/aws-graviton4-based-amazon-ec2-r8g-instances-best-price-performance-in-amazon-ec2/

Graviton4 на 10% дороже Graviton3 (которые в свою очередь на 5% дороже Graviton2), но в результате должны получаются эффективней.

Интересно, что по ошибке сейчас в прайсе указаны конкретные скорости сети для них, а не upto, как в блоге. Получается, это их базовая скорость. Так что стоит учесть, что "upto 12.5 GBit" для младших виртуалок это всего лишь реальные 0.5 GBit.

#EC2 #Graviton
🔥10
Graviton 4 виртуалки общего назначения — C8g/M8g 🎉

https://aws.amazon.com/blogs/aws/run-your-compute-intensive-and-general-purpose-workloads-sustainably-with-the-new-amazon-ec2-c8g-m8g-instances/

На 10% дороже, чем Graviton 3, на 17%, чем Graviton 2, однако с учётом большей эффективности, более выгодные и меньше потребляющие.

c8g.medium $0.03988 Up to 12.5 Gigabit
c7g.medium $0.0363 Up to 12.5 Gigabit
c6g.medium $0.034 Up to 10 Gigabit

m8g.medium $0.04488 Up to 12.5 Gigabit
m7g.medium $0.0408 Up to 12.5 Gigabit
m6g.medium $0.0385 Up to 10 Gigabit

#EC2 #Graviton
👍6🎉3
ARM & Graviton vs x86 & Intel/AMD

Есть важное отличие у ARM процессоров (Graviton) и x86 (Intel/AMD). У ARM процессоров нет Hyper-threading, то есть разбиения одного физического CPU на два логических, видимых для системы как обычные CPU.

Сделано это для того, чтобы загрузить процессор, пока он простаивает. А он действительно большую часть простаивает, т.к. операции загрузки из памяти (при промахе из кэша или ошибки предсказания переходов) занимают бесконечно много тактов по сравнению с непосредственно выполнением.

Разбиение на логические процессоры сделано на железном уровне и крайне эффективно, практически как надёжность S3 бакета. С одним важным НО — до 50% нагрузки. Потому что, если два логических шарятся на один физический, то оба логических можно загрузить лишь 50%+50% в одно и то же время.

Для облаков это имеет эффектом, что если у вас виртуалка на Intel или AMD, то при повышении постоянной нагрузки выше 50%, тормоза могут проявляться скачкообразно, а не линейно, как вы планируете.

На картинке пример от серверного процессора на ARM при кодировании видео для 192 физических процессоров AmpereOne и 192 логических x86 (не нашёл, Intel или AMD). Видно, что после 50% логические больше дать не могут, что логично. 😀

В то время, как ARM график продолжает расти. Что тоже логично — ведь больше реальных процессоров то в два раза больше.

Замечу, что подобный эффект проявляется на специфичных нагрузках, когда требуется максимальный compute. Однако при прочих равных лучше сразу ориентироваться на Graviton — и дешевле (либо эффективней для более новых моделей), и более предсказуемой, и быстрей.

P.S. Graviton 4 рвёт AmpereOne как тузик грелку.

#Graviton
👍15🔥84
Выбираем Graviton процессор

Graviton (первый) (2018) — инстансы типа A1

Анонсирован на re:Invent 2018, инстансы A1 стали доступны в 2019-м. Первый процессор от AWS получился слабым и это и выставленный на него ценник в два раза ниже Intel/AMD не исправлял ситуации — даже с учётом этого показатель производительность/цена у него был ниже плинтуса.

Пробовал их в 2019-м с такими же результатами — было очевидно, что AWS нужно было выйти на рынок CPU и получить фидбек в проде.

Итого: первый Graviton не берём. Не просто так сам AWS зачислил их в устаревшие вместе с другими старичками (что на десятилетие более старые, чем A1).

Graviton 2 (2019) — инстансы типа T4g/C6g/M6g/R6g и т.д.

Сравнивать с предыдущим Graviton просто не честно — на порядок быстрей, без преувеличения. Дешевле x86 по цене, часто быстрей, точно эффективней по показателю цена/потребление и цена/производительность.

Graviton 2 — самый популярный процессор на сейчас. Вообще среди всех. В 2023-2024 гг. более половины нагрузок внутри самого AWS — это Graviton 2. С появлением T4g крутить что-то для тестов на x86 тупо не выгодно. С 2020-го все нагрузки, включая прод, кручу только на Graviton-ах.

Итого: в любой непонятной ситуации берём Graviton 2.

Graviton 3 (2021) — инстансы типа C7g/M7g/R7g и т.д.

Грубо на треть быстрей второго, на 10% дороже, в результате процентов на 20% выгодней по производительность/цена. А по экологичности (производительности на Ватт) вообще на половину лучше.

На текущий момент Graviton 3 мой дефолтный выбор, везде доступен и можно не париться с тестами — точно будет выгоден.

Graviton 3E (2022) — инстансы типа C7gn/Hpc7g.

Разогнанная версия Graviton 3 с быстрой сеткой и дополнительными инструкциями. Можно пропустить, хотя, если бюджет казённый, то C7gn — мой выбор. Дороже, но для активной работы с S3 — просто супер.

Graviton 4 (2023) — инстансы типа C8g/M8g/R8g и т.д.

Грубо на треть быстрей третьего, на 15% дороже, в результате процентов на 15% выгодней по производительность/цена. По экологичности (производительности на Ватт) снова на половину лучше.

Итого, несмотря на то, что более дорогой, по-прежнему выгодней по производительности/цена.

Сравнить процессоры правильно на ваших реальных нагрузках. Но чтобы хоть как-то ориентироваться, ниже прилагается табличка, где есть колонка цена на производительность, измеряемую в ECU. Это такие процессорные попугаи, которые AWS использовал до 2014-го года. Данные взяты отсюда и дополнены последними Graviton 4.

В таблице видно, что AWS Graviton процессоры с каждым поколением становятся эффективней в пересчёте и на цену, и на Ватты. Что реально круто.

#Graviton #EC2
🔥35👍154🫡1