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