Релиз: Arm машинки в Google Cloud. Учитывая, сколько я тут писал про Arm (и я себя ещё останавливал), то, наверное, не сложно было догадаться :). Но это штука важна, прочитайте, пожалуйста, тут и про Apple будет.



https://cloud.google.com/blog/products/compute/tau-t2a-is-first-compute-engine-vm-on-an-arm-chip



Мы третьи (AWS, Azure), мы отстаем. Мне стыдно за это, почему так получилось не хочу говорить, мы просто дураки, вот и все. Пытаюсь оправдать себя тем, что если мы просто будем достаточно зарабатывать на этом, то не важно, третьи мы или нет.



И в целом Google никогда не был hardware компанией, понятное дело, мы плохо продаем и делаем железки, как тут говорят: "Google's DNA is software". Чип, который мы релизнули это Ampere Altra на Neoverse N1. Страшные имена, но это чип пока не наш.



Что делаю я в этом проекте? Занимаюсь перформансом и изредка нахождением всяких багов внутри чипа, деплоем на внутреннем облаке и вообще смотрю в будущее software-hardware codesign. Получилось занять нишу, где я общаюсь с обеими группами и перевожу один язык на другой. Оказывается это тяжело, поэтому мало кто занимается.



А теперь мое полотно и мнение:



Никто из Amazon/Microsoft практически не занимался software перфом на армах. Без шуток, учитывая, что я находил, рыская по форумам и git blame, кто что коммитил, я видел только несколько амазоновских коммитов в JVM, но они практически даже не притронулись к компиляторам или софту.



А кто, впрочем, занимается перфом Arm? По факту, сами Arm, Apple и ... Android люди из Google/Samsung (достаточно лениво, телефоны другая задача совершенно). Я видел ещё порой интересные коммиты от Huawei, Alibaba и Tencent.



То есть Китай, Apple и теперь мы подключились. Учитывая, что чип из коробки приносит достаточно сильно perf/$ экономию (10-20%), я был ОЧЕНЬ удивлен, увидев практически ноль вложений в софт.



Мы серьезно улучшили некоторые открытые бенчмарки, потому что мы пришли и пооптимизировали какие-то стандартные вещи по типу сравнений строк, компрессоров, хэштаблиц, собрали ядро правильно. Я сильно погрузился в ассемблер, SIMD, компиляторы, memory models, concurrency protocols, LLC eviction policies и тому подобное.



Я точно могу сказать, что gap в софте огромный. x86 уже 15 лет учит своих пользователей писать код через гайды, когда как Arm не учил практически никого. И это один из факторов, в который я верю, что он будет только расти. Выиграть ещё 2-3% в perf/$ каждый год в течение 2-3 лет из-за софта реально. Наш известный lemire выкладывает всякие проверки на utf8, ваш верный господин @Danlark приходит и поправляет имплементации на Arm https://github.com/simdutf/simdutf/pull/145 на пару десятков процентов.



Apple сделала некоторые вещи по-другому, меня это и удивило, и заставило задуматься. Нет, они не шаманы, нет, они не сделали свои инструкции или спец Memory model (но M1 с TSO), они лишь отошли от гайдов Arm, зная какие инструкции им нужны для крутого перфа, как впаять память поближе к сокетам. Самое важное изобретение -- Rosetta 2, настолько хороший JIT написали действительно знающие компиляторы люди -- команда J.F. Bastien. Они чуть чуть поиграли грязно, отойдя от гайдов, но и в х86 у нас полотно различных железок. M1/M2 чип, сделанный хорошо с хорошим софтом, но чтобы сделать хорошо, надо начать лет 10 назад. Apple смогли сыграть в долгую, и за это им уважение.



В Google мы пока можем предложить историю софта. Мне плевать, если мы соптимизируем для всех (e.g., OSS), конкуренция вендоров поможет развиться всем.



Если будут вопросы по нашим виртуалкам, или вы клиент и хотите перфа на Armах в нашем клауде, автор к вашим услугам, дропните сообщение @Danlark, и мы все устроим, официально и с моим энтузиамом, чтобы ваш софт работал нормально.