Skip to content

Latest commit

 

History

History
119 lines (75 loc) · 8.49 KB

russian-lang.md

File metadata and controls

119 lines (75 loc) · 8.49 KB

Почему не флаги Айкара?

Все очень просто, сбор мусора у него основан, как он говорит, на невероятно стабильном, но крайне медленном по текущим меркам алгоритме G1. При этом всем он максимально устарел, все, что он реализовал, было инновационным во времена JDK 8, сейчас - нет. Действительно, зачем менять то, что работает? А стоило бы.

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

Отказ от ответственности

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

Флаги

Поддержививаемые сборки JDK:

Рекомендую использовать OpenJDK 17

  • OpenJDK 8+
  • Red Hat 8+
  • Amazon 11+
  • Azul 11+
  • AdoptOpenJDK 11+
  • Oracle
  • SAP

Поддержививаемые сервера:

  • Vanilla
  • Bukkit, Spigot, Paper...
  • Fabric
  • Forge

Готовые свойства:

java -jar -server -Xms6G -Xmx6G -XX:+UseLargePages -XX:LargePageSizeInBytes=2M -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:+UseNUMA -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 launcher-airplane.jar --nogui

Предупреждение Option UseBiasedLocking was deprecated in version 15.0 and will likely be removed in a future release. может безопасно игнорироваться и использоваться на вашем сервере, флаг UseBiasedLocking прекрасно выполняет свои функции.

А теперь внимательно разберем, что за что отвечает:

-Xms6G и -Xmx6G: устанавливает границы использования памяти вашим сервером Minecraft, рекомендую не использовать более 12 Гб для вашего сервера и всегда оставлять 1 - 2 Гб свободной памяти для системы.

-XX:+UseLargePages и -XX:LargePageSizeInBytes=2M: позволяет использовать зарегистрированую память большими страницами, ускоряет скорость запуска и отзывчивость сервера. Заставим Linux регистрировать страницы для нас. Добавляем эту строку в /etc/sysctl.conf:

vm.nr_hugepages = 3372

Как мы получили это число? Допустим, я хочу зарегистрировать 6 Гб больших страниц, для этого делю 6 Гб на 2.

6 * 1024 / 2 = 3072

Далее я рекомендую оставить немного свободного места, и добавить 300 к нашему числу.

3072 + 300 = 3372

После перезагружаем систему для применения изменений. Убедиться в том, что память успешно зарегистрована можно командой grep -i hugepages /proc/meminfo.


-XX:+UnlockExperimentalVMOptions: включает возможность использования эксперементальных возможностей.

-XX:+UseShenandoahGC: использование в роли алгоритма сборки мусора проект Шенандоа.

-XX:ShenandoahGCMode=iu: включение экспериментального режима работы нашего сборщика, он является зеркалом режима SATB, что сделает разметку менее консервативной, особенно в отношении доступа к слабым ссылкам.


-XX:+UseNUMA: включает чередование NUMA на хостах с несколькими сокетами, в сочетании с AlwaysPreTouch он обеспечивает лучшую производительность, чем стандартная готовая конфигурация. Более подробно о данной архитектуре можно узнать отсюда.

-XX:+AlwaysPreTouch: предрегистрация сразу всей выделенной памяти, уменьшает заддержки ввода.

-XX:-UseBiasedLocking: существует компромисс между пропускной способностью неограниченной (предвзятой) блокировки и безопасными точками, которые JVM делает, чтобы включать и выключать их по мере необходимости. Для рабочих нагрузок, в том числе сервера Minecraft, ориентированных на задержку, имеет смысл отключить предвзятую блокировку.

-XX:+DisableExplicitGC: вызов System.gc () из пользовательского кода заставляет ShenandoahGC выполнить дополнительный цикл сборки мусора, отключение защищает от кода злоупотребляющего этим.

Серверное обеспечение (ядро)

В качестве максимально стабильного и производительного варианта, я бы порекомендовал использовать Airplane.

Система

Tuned-adm - это инструмент командной строки, который позволяет переключаться между настроенными профилями для повышения производительности в ряде конкретных случаев использования. Установите пакет с помощью apt-get:

sudo apt-get install tuned

Далее вам нужно подобрать конфиг под вашу систему, я рекомендую использовать throughput-performance или latency-performance, установите нужный вам профиль:

sudo tuned-adm profile throughput-performance

Убедиться в том, что изменения применены можно командой tuned-adm profile.

Подробная статья о всех профилях и в каких случаях их стоит использовать здесь.

Дополнительная конфигурация

bukkit.yml

chunk-gc:
 period-in-ticks: 600

Рекомендованное значение chunk-gc.period-in-ticks:

Не выделяйте больше чем 12 Гб памяти, это не даст никакого эффекта в большинстве случаев.

Память / Кол-во игроков до 30 30 - 60 60 - 100 более 100
4 Гб 400 - - -
8 Гб 600 400 300 -
12 Гб 1200 800 600 400