Оценка RISC-ов: когда ожидать серверы на ARM в дата-центрах

ohquazes2-jdmnx10czde3jok6e.jpeg


Игнорировать влияние ARM-архитектуры на рынке современных процессоров уже невозможно. Технология, созданная для малопроизводительных смартфонов, стала реальной угрозой гегемонии x86, которая царит на рынке последние «дцать» лет. Amazon запускает в облаке собственные серверы на базе ARM — Graviton2, заявляя, что чуть ли не 49% новых инстансов Amazon EC2 построено на базе этих серверов. А M1 от Apple показывает все большую конкурентоспособность.

Когда произойдет революция на серверном рынке? Состоится ли смещение Intel и AMD с пьедестала? Или они подстроятся под веяния рынка? Кто поднимет знамя ARM на серверном рынке и как скоро серверы с новыми процессорами заполнят дата-центры? Все эти вопросы обсудили в рамках выпуска подкаста «О чем молчит сервер» от Selectel, а я, директор по развитию продуктов Саша Тугов, зафиксировал ключевые мысли дискуссии и решил поделиться ими с Хабром. Добавлю, что это лишь мнение, которое не является истиной в последней инстанции. Хотите поделиться своими размышлениями на тему — добро пожаловать в комментарии.

История повторяется


Если посмотреть на историю серверного рынка, х86 не всегда был доминирующей платформой. В «стародавние времена» (80-е — 90-е годы XX века) популярные тогда мейнфреймы работали на довольно специфических процессорах, практически не совместимых с домашними компьютерами. А х86 был, по сути, очень-очень дешевой платформой для домашнего ПК. Как же эта архитектура проникла в серверы?

Дело в том, что Intel и AMD делали процессоры для масс-маркета, а в нем денег больше, чем в любом B2B-бизнесе. Соответственно, компании богатели: у них появились ресурсы на R&D (research and development), новые фабрики и другие активности, приводящие их к росту. В итоге процессоры Intel и AMD стали настолько крутыми, что обогнали все серверные платформы того времени. Так архитектура х86 закрепилась в серверном сегменте: сейчас она в 99,99% серверов.

Интересно, что тот же самый путь проходит архитектура ARM, изначально созданная для малопроизводительных телефонов, смартфонов, планшетов со «спрессованной» энергоэффективностью. Рынок мобильных гаджетов, как можно заметить, стремительно растет — сейчас он в разы крупнее современного рынка ПК и серверного оборудования.

Критический вес набирала и ARM, а компании, развивающие ARM-чипы (тот же Apple), настолько прокачали свои процессы, столько вкладывались в R&D, что превратили их в супер-мега-энергоэффективные и производительные процессоры, готовые к разным нагрузкам.

Сейчас можно наблюдать, как взорвали рынок макбуки на процессоре М1. Они доказали, что ARM — не только для скроллинга ленты в смартфоне, а как минимум для офисной работы. И кажется, серверный рынок ждет та же участь, что постигла его 20 лет назад, — смена «власти». Бабло побеждает бабло: у кого больше денег, тот делает более крутые технологии. А они, в свою очередь, вытесняют менее продвинутые технологии.

Что стоит за переходом на ARM


На самом деле, переход с x86 на ARM-архитектуру — лишь следствие другого важного изменения: изменения подхода к созданию микропроцессоров общего назначения. Тут нужно вспомнить про CISC- и RISC-архитектуры.

x86 и ее давно почившие аналоги относятся к первой. CISC (Complex Instruction Set Computer) — это расширенный набор инструкций, которые выполняет процессор. В современных имплементациях процессоров Intel, в документации, насчитывается более 6 000 инструкций. Просто огромное количество! Зачем вообще процессору выполнять так много инструкций?
ARM, в свою очередь, относится к RISC-подходу — Reduced Instruction Set Computer. Как можно понять из названия, здесь процессор использует урезанный набор инструкций — условно, 100–200.

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

У CISC-подхода тут начинаются большие проблемы, так как инструкций очень много. Во-первых, внутри процессора будет на порядок более сложный декодер инструкций. В CISC они еще и разной длины, что лишь усложняет их декодирование. Во-вторых, он будет медленнее работать в пике. Современные процессоры не выполняют инструкции строго друг за другом, как они написаны в коде. Иначе мы не получили бы таких быстрых процессоров, так и оставшись на уровне первого «пенька», разогнанного до больших гигагерц. Усугубляет все то, что инструкции в CISC сами по себе сложные: одна инструкция может загрузить из памяти, сложить два числа, перемножить на третье и положить в другое место в памяти.

У RISC все инструкции крайне простые: одна инструкция вынимает из памяти, вторая — складывает, третья — записывает обратно. Кроме того, все инструкции одинаковой длины, так что нашей «числодробилке» не нужно угадывать, где тут инструкция, а где данные.
Исполнение инструкций при RISC-подходе можно сравнить с очередью на кассе в магазине, когда один человек в конце очереди забирает свои продукты, второй расплачивается, а третий выкладывает свои продукты на ленту, чтобы кассир их пробил. Это дает значительный прирост в скорости. А в CISC-процессорах с этим проблемы: инструкции разной длины и сложности, выполняются в разное время.

Конечно, лидеры рынка понимали эти ограничения и искали способы их обхода. Так, у Intel и AMD есть такая технология, как Hyper-Threading. Она позволяет обрабатывать несколько инструкций на каждом ядре процессора. Так, одна часть ядра складывает, а вторая — делит. И все это происходит параллельно. Именно поэтому в процессорах с Hyper-Threading в два раза больше логических ядер, чем физических.

Как бы то ни было, тот факт, что у вас больше логических ядер, не означает двукратное повышение производительности. На практике повышение составляет 30–40%. К слову, гипертрейдинг можно и на ARM-архитектуре сделать. Просто пока этим никто не занимался.

ARM в дата-центрах


Зачем они там?


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

Процессоры на ARM-архитектуре хорошо масштабируются, не хуже, чем при х86. Уже есть коммерческие серверные ARM-процессоры, в которых по 64 ядра или даже 128 ядер. Кроме того, каждое ядро содержит меньшее количество транзисторов, поэтому они компактнее размещаются на кристалле.

Как «стакается» серверное ПО с ARM


Если смотреть на веб-сервисы, то большая часть написана на скриптовых языках. По сути, это даже не «бинарники», скомпилированные под определенную архитектуру, а программы на Python, PHP, Go, которые можно быстро перекомпилировать — в языках есть все возможности для этого.

Кроме того, большинство веб-проектов работают на ОС Linux. А ядро Linux уже очень давно поддерживает ARM-архитектуру. То есть в серверном сегменте гораздо более портируемое ПО. Добавим, что оно нередко с открытым исходным кодом, а значит, при необходимости его можно быстро оптимизировать под ARM. Это, конечно, большое преимущество серверного оборудования. Apple пришлось делать транслятор инструкции, чтобы старое ПО, созданное под x86, работало на новых М1. Но там своя специфика: большая часть приложений бинарно скомпилирована.

Если же речь о серверном оборудовании для энтерпрайз-заказчиков, которые сидят на Windows, то да, серверная «винда» ARM не поддерживает. Но есть мнение, что Microsoft почует, куда дует ветер. Перекомпилировать что-то под ARM, в целом, не так сложно, — был бы спрос. А спрос появится с большой вероятностью.

Когда ARM-серверы появятся в дата-центрах


С практической точки зрения прямо сейчас нет ARM-серверов, которые были бы сильно интереснее, чем Intel или AMD.

Серверные платформы на ARM есть, но для массового внедрения этого пока недостаточно. Одной архитектуры мало. Чтобы сделать классный процессор, нужны несколько составляющих: хорошая архитектура — раз, классная фабрика, которая тебе может изготовить чип по самому современному техпроцессу — два. В-третьих, нужны инновации, чтобы создать качественный кристалл, энергоэффективный, с большой частотой. Наконец, финансовая составляющая: чтобы производство процессора было выгодным, дешевым, конкурентоспособным, нужен огромный тираж.

Стартапы, создающие серверы на ARM, обычно проваливались на последнем факторе: низкие продажи, потому что они были лишь на старте, и, как следствие, высокие цены. Давайте встанем не место клиентов: нам говорят, мол, вот вам процессор на ARM, и называют немалую цену. Ну хорошо, ARM, но по производительности-то он такой же, как Intel. Да и у Intel больше линейка, больше альтернатив и плюшек. И не забываем, что стоимость процессора — занимает лишь 20–30% от стоимости сервера.

В общем, чтобы все сработало и у тебя купили ARM-процессор, нужно быть кем-то вроде Apple на серверном рынке. Сама Apple на него, конечно, едва ли ступит, так что мы ждем скорее ее аналоги. Может, на Китай наложат еще большие санкции и перестанут продавать им американские x86-процессоры. И Huawei начнет разрабатывать свой процессор. Мало того, что компания его сделает, они еще и обеспечит гигантское массовое производство за счет китайского рынка.

Если он получится дешевым, если он получится сверхтехнологичным (сделают сложные интерконнекты, чтобы там могло уместиться до 100–200 ядер, общий кэш, быстрый обмен данными и т.д.), если Huawei обеспечит дистрибуцию, поддержку, экосистему, запатчит Linux по полной, тогда да, это будет прямо революция в серверном сегменте.

Но пока вся картина не складывается, есть только фрагменты. Нет большого рынка, нет тех, кто поднял бы знамя ARM и шел бы с ним на серверный рынок.

Серверы на ARM в Selectel


В Selectel Lab мы тестировали сервер от Huawei с двумя процессорами по 64 ядра. Когда ARM-процессоры только пришли, у Вовы Турова было очень много проблем с ними. Архитектура непонятная, а единственная операционная система, которую удалось установить сразу, это CentOS 7. В ней по умолчанию все пакеты стабильны, а программное обеспечение очень старое. Где найти нужный софт? В итоге наш специалист поладил с сервером и поставил на него Ubuntu. Серьезных различий с привычным х86 нет: пакеты есть, программное обеспечение есть, все радует. Но физические тесты производительности, например Geekbench, для серверов на ARM недоступны — не собраны еще под эту архитектуру.

givwo83qdzigwas6btxfaylp5me.jpeg

Сервер Huawei Taishan 200. Источник

Клиенты Selectel, которые брали ARM-серверы Huawei на тест, на проблемы с софтом не жаловались. Для многих, конечно, преимущество x86 состоит хотя бы в том, что под эту архитектуру больше ПО написано. Но в этом не так много правды. В мире Linux достаточно много программного обеспечения с открытым исходным кодом. Поэтому, если до тебя никто не запускал какой-то софт на ARM, просто будь первым.

От кого ожидать процессоры в серверном сегменте


На самом деле, позволить себе такую разработку могут крупные облачные провайдеры — тот же Amazon. Стоит понимать, что Amazon Web Services гораздо больше любого Dell, HP и других игроков рынка.

Очень интересно наблюдать, как Amazon уже запустил в своем облаке собственные серверы на базе ARM — Graviton2. И компания заявляет, что у них чуть ли не 49% новых инстансов Amazon Elastic Compute Cloud построены на базе этих серверов. А это просто гигантский уровень проникновения для такой молодой технологии. Также 14% всех виртуальных машин Amazon — на базе их собственных ARM-серверов.

sjush3-hydqbbl2kwhb0e-1evig.jpeg

Источник

Конечно, всегда есть риск, что каждый лидер рынка — Google, Microsoft, Amazon — будет делать ARM-архитектуру под свои продукты, а провайдерам потом придется как-то учиться их адаптировать. Так мы опять вернемся во времена мейнфремов, когда эти «суперкомпьютеры» представляли собой программно-аппаратные комплексы, несовместимые ни на уровне «железа», ни на уровне ПО.

Но сейчас такая ситуация менее вероятна: рынок привык к открытости и конкурентному подходу. Кроме того, балом сейчас правят облачные провайдеры, и поставщикам оборудования и ПО приходится считаться с их требованиями. Ведь клиенты приходят в первую очередь к облачному провайдеру, а потом смотрят, что у них в маркетплейсах и списках сервисов.
В чем еще преимущество облаков в этом деле? Когда ты вкладываешься в какой-то R&D, естественно, ты хочешь защитить свои наработки от конкурентов. Например, как делают в Apple. У них сильно огороженная экосистема, в которую они никого не пускают.

В случае с облачными провайдерами эта огороженная экосистема получается естественным образом. Пользователи (как и конкуренты) облачного сервиса не могут добраться до «потрохов» технологии и скопировать ее. Ты используешь сервис, а как он там внутри оптимизирован, это все интеллектуальная собственность компании. Те же Amazon берут ARM, допиливают архитектуру для серверов, потом берут какой-нибудь Linux, но при этом его полностью переписывают, запатчивают и делают какую-нибудь базу данных как сервис, на базе полностью своего программно-аппаратного стека. А затем продают процессоры той же производительности за меньшие деньги либо процессоры с большей производительностью за те же деньги. Естественно, все идут к ним.

И, по сути, мы уже наблюдаем эту революцию. И в случае с ARM-процессорами она идет даже не от производителей серверов, а от гипер-облаков. У кого очень много серверов? У FANG (Facebook, Amazon, Netflix, Google и других). Google уже, может, что-то такое делает в своей Кремниевой долине, но для внутренних проектов. Мы не можем знать наверняка.

***
Разницу между подходами RISC и CISС мы популярно объяснили в третьем ролике цикла, посвященного Mac Mini на M1.


Если не видели эти ролики, советуем — это качественный geek porn. Там же, на YouTube Selectel, есть остальные выпуски подкаста «О чем молчит сервер».

image-loader.svg

© Habrahabr.ru