Guides / Server & Performance

Флаги Aikar меняются при 12 ГБ — пять из них, и один уменьшается

Копирование набора флагов для 4 ГБ на сервер с 16 ГБ приводит к пяти неверным значениям. Вот какие именно пять, а также количество игроков, при котором моддифицированный сервер пересекает черту, а ванильный — нет.

Флаги Aikar — это стандартные в сообществе аргументы JVM для сервера Paper, и обычно их копируют одним блоком. Но это не один блок: из двадцати аргументов пять меняются в зависимости от того, превышает ли размер вашей кучи 12 ГБ. Вставка набора для малой кучи на сервер с большой кучей — это самый распространенный способ запустить "рекомендуемые флаги" и не получить их.

Пять изменяющихся флагов

флагдо 12 ГБ12 ГБ и более
-XX:G1NewSizePercent3040
-XX:G1MaxNewSizePercent4050
-XX:G1HeapRegionSize8M16M
-XX:G1ReservePercent2015
-XX:InitiatingHeapOccupancyPercent1520

G1ReservePercent — это тот, который уменьшается. Четыре из пяти увеличиваются с размером кучи, а этот уменьшается, поэтому полузабытое "увеличить числа для большого сервера" приводит к неправильному набору, а не просто к неоптимальному. Он резервирует часть кучи на случай сбоя эвакуации, и большая куча нуждается в меньшей доле, чтобы обеспечить тот же абсолютный запас.

Остальные тринадцать аргументов -XX: идентичны при любом размере кучи — -XX:+UseG1GC, -XX:MaxGCPauseMillis=200, -XX:+AlwaysPreTouch, -XX:SurvivorRatio=32, -XX:MaxTenuringThreshold=1 и остальные не меняются. Только -Xms и -Xmx отслеживают сам размер кучи.

Где на самом деле проходит граница 12 ГБ

Генератор на этой странице определяет размер кучи по количеству Игроков:

GB = clamp( ceil( (modded ? 2.5 : 1) × (2 + players / 12) ), 2, 32 )

Моддифицированные серверы рассчитываются как в 2,5 раза больше ванильных, и этот фактор решает, кто вообще увидит ветку для большой кучи:

Игрокиванильныймоддифицированный
103 ГБ8 ГБ
204 ГБ10 ГБ
295 ГБ12 ГБ ← моддифицированный пересекает здесь
507 ГБ16 ГБ
10011 ГБ26 ГБ
10912 ГБ ← ванильный пересекает здесь28 ГБ

Моддифицированный сервер достигает флагов для большой кучи при 29 Игроках. Ванильный — только при 109. Таким образом, для большинства людей, использующих ванильный Paper, набор для малой кучи является правильным постоянно — а для большинства людей, использующих моддифицированный, он перестает быть правильным гораздо раньше, чем они ожидают.

Два важных ограничения в этой формуле

Она никогда не рекомендует более 32 ГБ. Ванильный сервер достигает предела при 349 Игроках и остается там. Это не артефакт округления — после примерно 32 ГБ JVM теряет сжатые указатели на объекты, и каждая ссылка в куче становится больше, поэтому больше ОЗУ может означать меньше полезной кучи. Масштабирование за эту точку — задача для второго сервера, а не для большего.

Она никогда не рекомендует менее 2 ГБ, даже для одного Игрока, потому что нижний предел — это серверное программное обеспечение, а не количество населения.

И что бы ни говорила формула: не отдавайте JVM всю память, что есть на машине. -Xms и -Xmx здесь намеренно установлены на одно и то же значение — фиксированная куча предотвращает изменение размера JVM под нагрузкой — что означает, что выбранное вами число запрашивается немедленно и постоянно. Оставьте операционной системе 1–2 ГБ, за которые ей не придется с вами бороться.

Генераторы конфигурации сервера →

More guides

Browse all →

Нужны другие инструменты для Minecraft?

Набор генераторов, просмотрщиков и конвертеров прямо в браузере — всё бесплатно.