Ядра, которых нет
👁 446↗ 1
Можно было бы назвать пост "кругом обман", но тут на самом деле обмана никакого нет, в том, что хостинг-провайдеры продают в аренду несуществующие ядра сервера.
Начну с истории
Было у меня приложение на Yandex Cloud, которое крутилось на виртуальном сервере с 2vCPU, стоило чуть больше 2500р в месяц. Пока приложение приносило деньги, о цене я не думал. Но когда доход у приложения просел, я решил переехать на более дешевый провайдер TimeWeb: те же 2vCPU, сопоставимые память и диск, но уже примерно 1200р в месяц.
И приложение стало заметно медленнее. Кажется те же 2vCPU, но в чем дело?
У Яндекса в стандартной конфигурации идут vCPU с гарантированной долей 100%, это ядра доступные непрерывно. А у TimeWeb на обычных облачных тарифах 2vCPU - это право встать в очередь к ядрам.
Кстати это легко проверить, вы можете открыть на своем сервере "top" и в строке %Cpu(s) в конце будет указано типа 0.3 st. st - steal time, это время в очереди, когда серверу требовалось ядро, но пришлось ждать. Смотреть лучше под нагрузкой, потому что на простаивающем сервере очереди может не быть и 0.0 st ничего не значит. У сервера с закрепленными ядрами, st держится на нуле. У моего сервера TimeWeb даже на простое тогда скакало 0.1/0.3/1.0 st.
Откуда очередь?
В физическом сервере, допустим есть 64 ядра - а хостинг может продать с него 200 vCPU. Расчет на то, что большинство виртуалок почти всегда простаивают. Это, кстати, и ответ, почему лаги растут вечером: днём соседи по серверу спят, а вечером нагрузка у всех и появляется очередь, и st растёт, а приложение тормозит.
Формально никто не врет! У всех всё написано в документации. Однако я посчитал, что мне можно было не переезжать с Yandex Cloud, а просто выбрать другой тариф с Shared-core - это по сути и есть то, что можно выбрать гарантированную долю ядер
(20%/50%) и цена приблизительно будет как у TimeWeb. Или наоборот, на TimeWeb выбрать тариф Dedicated CPU с закрепленными ядрам, но цена выходит тогда даже выше, чем у Yandex на стандартном тарифе.
Кстати многие провайдеры так разделяют VDS от VPS, типа на VDS - фиксированные ядра, а на VPS - общие. Но чаще это просто синонимы, и на названия смотреть бесполезно. Гарантированную долю vCPU смотрим в описании тарифа, а реальную картину - в том самом st.6