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
Post #3125
2.78K

- 👍 15
- 🔥 8
- ❤ 4