К основному содержимому

Железо для игрового сервера: частота важнее ядер

Выделенные серверы · 24.09.2026
Иллюстрация к статье «Железо для игрового сервера: частота важнее ядер»

Железо для игрового сервера: частота важнее ядер

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

  • Один мир = одно ядро. Восемь ядер не ускорят один тик, но позволят держать восемь миров.
  • Бюджет тика при 20 tps — 50 мс, при 64 tps — около 15 мс. Выход за бюджет игроки видят как рывки.
  • Память: по 4–8 GB на мир в Minecraft Java, по 1–2 GB на инстанс Source, по 8–16 GB на крупный мир Rust.
  • Игровой трафик — это много мелких UDP-пакетов, а не гигабиты. Канал упирается в pps, а не в ширину.
  • Governor в режиме powersave даёт плавающую частоту и нестабильный тик; ставьте performance.

Почему частота, а не количество ядер

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

Многоядерность работает иначе: она даёт изоляцию. Три мира Minecraft на трёх ядрах не мешают друг другу, а один мир на двенадцати ядрах будет грузить одно ядро и простаивать на остальных. Общая логика выбора процессора под задачу разобрана в статье про выбор процессора для сервера.

Отсюда практический вывод: на одном тяжёлом мире с сотней игроков тариф с E3-1270v6 может отработать не хуже двухпроцессорной машины, а на десяти небольших мирах выиграет E5-2680v4 с большим числом потоков.

Сколько памяти и диска нужно

ПрофильRAM на инстансЧто ещё критичноПодходящий тариф
Minecraft Java, 20–40 игроков, модпак6–8 GBЧастота ядра, NVMe под генерацию чанковStart DE / Start FR
Source-игры, 3–5 инстансов1–2 GBСтабильный tickrate, низкий джиттерStart DE / Start US
Rust, средний мир10–16 GBПамять и скорость загрузки мираPro DE / Pro FR
10 и больше миров разом32–64 GB суммарноЧисло потоков, RAID10 под сейвыEnterprise US

Старт мира читает с диска сотни мегабайт, а автосейв пишет их обратно под нагрузкой: на SATA SSD это заметная просадка тика, на NVMe она пропадает. Тарифы Pro и Enterprise идут с NVMe в RAID1 и RAID10, конфигурации перечислены на странице выделенных серверов.

Канал, задержка и локация

Игровой сервер отправляет каждому игроку снапшот каждый тик. Ширина канала при этом расходуется скромно, а вот пакетов в секунду получается много, и именно их обрабатывает сетевой стек. Unmetered-канал на 100 Мбит/с в Германии спокойно держит десятки игровых слотов, но лимит трафика стоит проверить, если вы ещё и раздаёте модпаки: про это в статье про канал сервера и лимиты трафика.

Задержка до игроков важнее всего остального железа. Выбирайте площадку по географии аудитории и проверяйте её замерами — методика описана в статье про выбор локации сервера.

Настройка Linux под стабильный тик

Три вещи дают больше, чем любые «оптимизации» конфига игры: фиксированная частота, увеличенные сетевые буферы и приоритет процесса.

# Debian/Ubuntu: фиксируем частоту на максимум
apt-get install -y linux-cpupower
cpupower frequency-set -g performance
# RHEL/AlmaLinux/Rocky
dnf install -y kernel-tools tuned
tuned-adm profile latency-performance

# проверяем, что частота действительно держится
grep MHz /proc/cpuinfo | head -4
cpupower frequency-info | grep -E 'governor|current'
# сетевые буферы под много мелких UDP-пакетов
cat << 'EOF' > /etc/sysctl.d/90-game.conf
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 5000
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384
EOF
sysctl --system 2>&1 | grep -E 'rmem_max|backlog'

# приоритет процессу мира и его диску
systemctl set-property game@world1.service CPUWeight=900 IOWeight=900

После изменений смотрите не на среднее время тика, а на максимум за минуту: рывки живут именно в пиках. Если пики совпадают с автосейвом, разносите сейвы разных миров по времени.

Игровые порты живут на UDP, и фильтрация L7 их не закрывает: против флуда на игровой порт работает именно L3/L4-защита на уровне аплинка. На площадках в Германии и США она включена на всех тарифах, во Франции работает Anti-DDoS Arbor; подробности — в статье про DDoS-защиту выделенного сервера. Вторая типичная ошибка — оставить governor в powersave и потом искать причину рывков в конфиге игры. Проверяйте так: запустите нагрузку, снимите grep MHz /proc/cpuinfo несколько раз подряд и убедитесь, что частота не проваливается между замерами.

Коротко

  • Один мир считается одним ядром: частота даёт прямой выигрыш во времени тика, число ядер — только в числе миров.
  • Память планируют по инстансам: 6–8 GB на модпак Minecraft, 1–2 GB на инстанс Source, 10–16 GB на мир Rust.
  • NVMe убирает просадки тика на автосейве и генерации карты, SATA SSD их оставляет.
  • Канал расходуется на пакеты, а не на гигабиты; критичнее ширины — задержка до аудитории.
  • Governor performance, увеличенные UDP-буферы и приоритет процесса дают больше, чем правки конфига игры.
← Назад в базу знаний Задать вопрос поддержке