Много ядер CPU или быстрые ядра?

Наше сообщество испытывает резкие всплески трафика, связанные с реальными событиями — а именно с матчами по хоккею с шайбой, в результате которых в течение примерно 2,5–3 часов в посвящённую тему поступает около 1000 сообщений. Как обсуждалось в другой теме, нам трудно справляться с такими пиками нагрузки.

Это подтолкнуло меня к изучению других вариантов хостинга с ограниченным бюджетом. Целевая стоимость — около 50 евро в месяц. С момента моего последнего анализа предложений рынок значительно изменился.

  • Всего за 42 евро можно получить выделенный сервер от Hetzner с процессором Ryzen 5 3600. Это довольно мощный процессор с 6 ядрами. Как совпало, у меня на ноутбуке установлен аналогичный процессор, и он выполняет однопоточные вычисления примерно на 40–50% быстрее, чем типичный хорошо настроенный VPS.
  • Однако в том же ценовом диапазоне можно приобрести VPS с большим количеством ядер, но несколько меньшей производительностью. Contabo предлагает 10 ядер всего за 27 долларов, а Hetzner предоставляет до 16 ядер за 62 евро. И это лишь примеры — на рынке существует множество других провайдеров.

Эти предложения заставили меня задуматься: какая конфигурация ядер оптимальна для Discourse с точки зрения максимизации пиковой производительности? Меньшее количество ядер с более высокой производительностью или большое количество ядер с меньшей производительностью?

Я попытался найти информацию по этому вопросу, но в основном нашёл свои старые посты :slight_smile: . Помню, что эта тема периодически поднималась в первые дни существования проекта, но в последнее время она не обсуждалась подробно. За прошедшие годы код значительно изменился, поэтому, возможно, изменилось и поведение программного обеспечения, а также общие рекомендации?

Вы правы, это старые посты, но тенденция кажется последовательной :thinking:

Как насчет масштабируемого экземпляра для игровых вечеров? При небольшом времени простоя легко сделать резервную копию и запустить более крупный или меньший экземпляр. У меня была похожая проблема с экземпляром Jitsi (отличный компонент кстати :smile:), большую часть времени он простаивал, но несколько раз в неделю…

Трудно дать рекомендации, не зная точно, в чём заключается текущее узкое место.

Использование плагина экспорта Prometheus для Discourse может показать, какой именно из множества компонентов является проблемой.

Хотя я и упомянул наш кейс в первом посте, намерение состояло в том, чтобы обсудить это на общем уровне. Я могу выйти на рынок хостинга в среднесрочной перспективе, независимо от того, выявил ли я корневую причину нашего кейса или нет.

Для Discourse следует отдавать предпочтение быстрым ядрам, а не большему их количеству. Если вы можете получить и то, и другое, это ещё лучше (для сценариев с высокой нагрузкой). Но в типичном случае 2 быстрых ядра в целом будут работать лучше, чем 4 медленных.

Мы обычно оцениваем это по времени сборки, вот несколько примеров. Но подойдёт любой синтетический тест с однопоточной нагрузкой.

В идеале время сборки должно быть меньше 4 минут (240 секунд).

Я не эксперт в этой области, но я не уверен, что виртуальные ядра VPS вообще можно сравнивать с физическими ядрами процессора. Думаю, чтобы получить грубую оценку, можно ориентироваться на объём предлагаемой оперативной памяти и исходить из того, что эти VPS запускаются на компьютере с 256 МБ памяти. Contabo с их «10 (виртуальными) ядрами» предлагает 60 МБ оперативной памяти. Вероятно, они запускают 4 таких экземпляра на чём-то, что примерно эквивалентно выделенному серверу Hetzner, о котором вы упоминаете (сервер с 256 МБ). Таким образом, я бы предположил, что «10 (виртуальных) ядер» обеспечивают примерно четверть производительности «6 (физических) ядер». Скажем, максимум половину, если они запускают два таких экземпляра на компьютере с 128 МБ (у которого, возможно, процессор лучше или медленнее, чем у машины Hetzner — кто знает).

(Сравнивать «виртуальные ядра» можно только между различными предложениями VPS одного и того же провайдера. Я даже не уверен, что имеет смысл сравнивать VPS разных провайдеров).

Если вы хотите узнать наверняка, вам нужно оформить подписку на 1 месяц и запустить бенчмарк. Или убедить их запустить его для вас, либо предложить вам бесплатную пробную версию на короткий срок. Если вам действительно важна производительность, это единственный реальный способ узнать правду для VPS. Либо выберите выделенный сервер, где у вас будет более точная информация.

РЕДАКТИРОВАНИЕ: Провайдеры VPS, такие как Contabo, обычно используют KVM для виртуализации, и после поиска действительно выясняется, что можно показать больше «виртуальных ядер», чем есть физических. Пример:

Да, вы можете настроить и запустить больше виртуальных процессоров, чем доступно физических ядер. Это бездействующий гость Windows Server 2008 (x86, немецкий) на KVM, показывающий 10 процессоров на машине Intel X3210 с одним 4-ядерным процессором.
(источник: https://serverfault.com/questions/435231/can-kvm-cpu-assignment-count-differ-from-physical-hosts-cpu-count)

Это имеет смысл, учитывая, сколько оперативной памяти они предлагают по сравнению с количеством «ядер».

Пока я изучал это предложение и думал: :face_with_monocle: хм, выгодная сделка, заметил, что оперативная память не имеет ECC. Быстро поискал в интернете, и что я вижу? эта статья в блоге от Джеффа :sweat_smile:
Видео о процессорах сделало мой день…

Ого, я уже хостюсь у Hetzner, но по более высокой цене, с более медленным процессором и меньшим объёмом хранилища, чем у их текущих Ryzen-серверов. Это делает переход очень привлекательным… спасибо за заметку!

Спасибо за ссылку на блог. Это действительно интересная статья.

Я тоже согласен, что видео стоит тысячи слов и, к тому же, очень забавное.

Кто-нибудь проводил тесты с разными процессорами относительно размера кэша L3?

Я видел упоминания о том, что Ruby очень требователен к памяти. Это может дать подсказку о возможном влиянии размера кэша процессора, поскольку Discourse работает с большими наборами данных.

Я выбираю новый сервер и подходящий процессор. Интересно, стоит ли ориентироваться на максимальную тактовую частоту или также учитывать размер кэша L3.

Сейчас я рассматриваю Intel® Xeon® E-2174G с 4 ядрами, частотой 3,8 ГГц и кэшем 8 МБ. Однако есть более дорогие варианты с кэшем 12 МБ или 16 МБ. Стоит ли они своих денег?

Спасибо!

По моему опыту, это не внесёт существенных изменений.