AWS Notes
5.6K subscribers
444 photos
42 videos
10 files
2.8K 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

Annapurna - секретное оружие Амазона

Вышел AWS Graviton 2 - второй процессор от Амазона.

Хотел было "коротенько" написать, в том числе для тех, кто пропустил первый AWS Graviton, который вышел год назад на прошлом реинвенте, но понял, что замного в один пост.

В общем, по порядку – предыстория или краткое содержание предыдущих серий.

Куры не клюют

По понятным причинам (денег много и их куда-то нужно девать - не отдавать же их постоянно Intel) Амазон хотел свой процессор уже давно - где-то с 2011-го года.

AWS + AMD

Амазоновцы начали постепенно собирать команду железячников-разработчиков и после решения AMD громко войти на серверный рынок со своим будущим K12, договорились в 2014-м делать это совместно.

Лучше гор могут быть только горы

Однако в 2015-м, когда AMD провалила все сроки и тесты, Амазон плюнул и купил себе лицензию ARM для производства процессоров и на сдачу израильскую Annapurna Labs за 350 миллионов, с которой он уже делал себе сетевое железо для четвёртого поколения (С4) инстансов. В общем, Амазон решил пилить железо сам.

Сами с усами

В результате уже на 2016-м реинвенте Амазон смог похвастаться собственными роутерами с Amazon Annapurna ASIC. А на реинвенте 2017-го вышло пятое поколение Nitro-based инстансов - прекрасный результат работы израильской команды.

AWS Graviton

У Intel проблемы с переходом на 10-нм технологию, AMD "эпично" отжирает рынок удачной Zen архитектурой, а Амазон выпускает свой первый процессор.

Разработчик: Annapurna Labs
Производитель: TSMC
Анонс: 27-го ноября 2018 года

Спецификация Graviton 1
Частота: 2,300 MHz
Архитектура: ARMv8 Cortex-A72
Техпроцесс: 16 nm
Транзисторов: 5 000 000 000
Разрядность: 64 bit
Ядер: 16
Потоков: 16
Кэш L1 инструкции:48 KB
Кэш L1 данные: 32 KB
Кэш L2: 8 MB (2*4)

Не шибко большой кэш первого и второго уровня, один двухканальный контроллер памяти на все ядра. Конфигурация получилась нежирной, но нужно было с чего-то начинать. Потому ценник был выставлен наполовину меньше других аналогов, что может быть актуально для каких-то задач. Особенно в свете, например, свежевышедшей поддержки Graviton A1 инстансов со стороны EKS.

...продолжение следует

#Graviton
A2 или M6g?

Если вы следили за руками, то тоже не могли не заметить - вместо очевидного семейства A2 инстансов на AWS Graviton 2, были анонсированы M6g, уже доступные в превью и C6g/R6g в будущем. Как же так, что случилось, почему и если да, то неужели настолько круто - попробуем разобраться.

Гравитон 1

Первый процессор от Амазона был сделан по 16-нм технологии, работает на частоте 2.3 ГГц, держит до 32ГБ памяти и имеет 16-ядер. Теоретически он мог быть 8-ми ядерным с поддержкой SMT (гипер-трединг), но это вряд ли, т.к. если выполнить в A1 виртуалке:

$ cat /proc/cpuinfo
processor      : 0
BogoMIPS : 166.66
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3


Что соответствует характеристикам Arm Cortex A72 на платформе Cosmos.

Тут нужно сделать оговорку - все такие данные, понятно, закрыты и потому черпаются из публичных источников, в первую очередь официальных анонсов плюс сравнением с характеристками сходных реализаций — ведь это же открытая архитектура ARM. А также опыта и здравого смысла. Если у вас есть более точная информация - пишите в комментариях.

Итак, зафиксировали, первый Гравитон это 2.3 ГГц, 16 ядер, 32 гига памяти, 32+48KB L1 кэша, представляющий собой дефолтный или в чём-то раствиканный Arm Cortex A72. Не блещущий производительностью - грубо (или очень грубо) в 1.5-2 раза (где как) медленней аналогов от Intel и AMD, но при этом и дешевле их на 40%. Что в общем случае не покрывает разницы в производительности, однако в специфичных нагрузках мог быть выгоден, т.к. всё же сильно дешевле.

#Graviton
Гравитон 2

Как говорилось выше, нужно внимательно следить за руками, чтобы разложить все эти 7x higher performance и прочие up to 40% better по полочкам.

Спецификация Graviton 2
Частота:     3,500 MHz
Архитектура: ARMv8.2 Ares Neoverse N1
Техпроцесс: 7 nm
Транзисторов:30 000 000 000
Разрядность: 64 bit
Ядер: 64
Потоков: 64
Кэш L1 инструкции:64 KB
Кэш L1 данные: 64 KB
Кэш L2: 32 MB (0.5*64)

В 7 раз быстрей

Речь о процессоре в целом (а не отдельной виртуалке - хороший маркетинговый ход). Что логично - ядер в четыре раза больше (в первом 16, стало 64), частота выше (было 2.3ГГц, стало 3.5ГГц). Вооружимся калькулятором и посчитаем:

(64/16)*(3.5/2.3) ≈ 6

Подкинем к этому увеличенный кэш и скорость операций с плавающей точкой, 8 контроллеров памяти вместо одного общего раньше и другие оптимизации - вполне логично получим озвученные "в 7 раз быстрей". Даже может возникнуть вопрос - а почему, собственно, только лишь в 7? Ответ понятен - тут нет линейной зависимости, но смысл ясен - точно стало быстрей. Но насколько?

Только нужно учитывать - это про чип (процессор), а не про отдельную виртуалку. То есть m6g.medium не будет в семь раз быстрей a1.medium, хотя на отличие 7/(64/16)=1.75 или почти в два раза рассчитывать теоретически можно. А что же говорят нам з̶в̶ё̶з̶д̶ы̶ тесты?

Озвученные результаты тестов M6g по сравнению с M5 виртуалками:

HTTPS load balancing with Nginx: +24%
Memcached: +43% performance, at lower latency
X.264 video encoding: +26%
EDA simulation with Cadence Xcellium: +54%

Выглядит красиво. Если принять за точку отсчёта сказанное вначале (A1 тип виртуалок, проигрывающий в полтора раза своим "аналогам") и сейчас она ускорится в 1.75..2 раза, то (1.75..2)/(1.5...2) вполне кореллируют с оптимистичным диапазоном +20-30%. Мы же не видели результатов, где хуже или не отличается, потому вполне можно принять за правду.

M6/C6/R6

Однако можно ли это считать шестым поколением? Ответ простой - д̶о̶к̶т̶о̶р̶ ̶с̶к̶а̶з̶а̶л̶ ̶в̶ ̶м̶о̶р̶г̶,̶ ̶з̶н̶а̶ч̶и̶т̶ ̶в̶ ̶м̶о̶р̶г̶ опыт с выделением процессора Амазона в отдельный тип инстансов (А1) был признан не самым удачным. Увидев реакцию пользователей, как хорошо им зашли процессоры AMD с буковкой а (T3a/M5a/C5a/R5a), амазоновцы тоже так захотели, а потому было принято решение "смешаться с толпой". Кто там эту букву смотреть будет, когда (ненамного но) дешевле, а при этом цифра (M6g) больше.

В сухом остатке

Новый процессор на Ares платформе по старому роадмэпу (см. картинку) должен был дать прирост +30%. На других картинках более впечатляющие +60%. Что же будет - посмотрим, когда появятся тесты. Однако не нужно иметь пядей во лбу, чтобы предположить, что Graviton 3 точно будет достойным процессором!

#Graviton
Новые тесты процессора AWS Graviton 2

Появились свежие данные по производительности амазоновского процессора Graviton 2, который скрывается под инстансами с буковкой g в конце — M6g.

https://community.intersystems.com/post/intersystems-iris-arm-based-aws-graviton2-processors

Кому лень читать статью, спойлер — чем дальше в лес, тем крепче гравитоны.

#Graviton
Новые тесты AWS Graviton 2

https://www.anandtech.com/show/15578/cloud-clash-amazon-graviton2-arm-against-intel-and-amd

Если коротко, Graviton 2 рвёт AMD и Intel как тузик грелку прямо везде. Правда с поправкой на то, что все тесты синтетические (нет реальных бенчмарков), сравнивать 64 ядра Гравитона 2 с 32 ядра + 32 потока у старенького AMD первого поколения Zen — так себе практика (почему не Zen2 и что там делает Intel с 24 ядрами + 24 потоками — промолчим).

Но если отбросить подобные придирки — выглядит устрашающе и наверняка достойно, чтоб хотя бы попробовать лично и сделать собственный вывод.

#Graviton
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