- PVSM.RU - https://www.pvsm.ru -
Продолжая серию статей что-то против чего-то, мы наконец рассмотрим что-то полезное, а именно сервер Minecraft. Рассмотрим какая операционная система и какая ява все же лучше для того, чтобы хостить лучшую игру человечества. Для сравнения взяты Ubuntu 18.04 LTS и Server Core 2019. На Ubuntu был установлен OpenJDK, а на Windows — Oracle Java и AdoptOpenJDK.
Как и на всех остальных сравнительных тестах, у виртуальных машин не было соседей, на хосте всегда была запущена только одна ВМ.
Серверы запускались с аргументами:
-Xmx8G -server
На Windows Server Core был удален компонент Windows Defender, как в нашем образе с Windows VDS [1] за 99 рублей. Для сравнения, вот что вы теряете, когда оставляете его включенным.
В этом тесте генерируем мир. В качестве генератора выступал Geographicraft с установленным Biomes’O’Plenty, Dynamic Trees, PVG, worley caves, IC и BC.
Мир отнюдь не классический и генерируется заметно медленнее обычного.
Мир размером в 2704 чанков был отгенерирован:
Windows c AdoptOpenJDK отрывается от своих конкурентов на 5 секунд.
Замер проходил в три прохода для каждой виртуальной машины. Каждый раз каждый из серверов завершал загрузку мира секунда в секунду по сравнению с прошлым результатом.
OpenJDK на Windows что и OpenJDK на Linux показывают одинаковые результаты.
Процесс начинает потреблять тем больше памяти, чем больше установлено на нем ядер. Ниже приведена таблица занимаемой памяти процесса пустого сервера без загруженного на нем мира.
Oracle JRE потребляла в среднем на 80-100 мегабайт больше на четном количестве ядер. Тоже самое касалось и AdoptOpenJDK, только на нечетном количестве ядер.
Linux не показывал такой странности.
Сцена представляет из себя расчет коллизии 32 куриц в коробке 2 на 2. Сцена была подготовлена заранее и один и тот же мир был раскидан по серверам, чтобы все было честно.
Для этого теста было установлено одно ядро, а процессу выставлялся приоритет реального времени.
Рабочий набор OpenJDK в этой сцене был на 40 мегабайт больше чем у соперников.
Среднее потребление процесора у Oracle и AdoptOpenJDK одинаковое, но мусор Oracle при всех равных собирает чаще и интенсивнее, что чаще приводит ко всплескам процессорной активности.
Чтобы экстраполировать какое количество подобных сцен мы сможем обработать, давайте просто увеличим тикрейт сервера.
В тесте с повышенной нагрузкой Ubuntu c OpenJDK сравнялся с Windows c AdoptOpenJDk, а Oracle догоняет.
Под более высокой нагрузкой OpenJDK на Windows дал лучшие результаты, чем на Ubuntu.
Сервер OpenJDK на Ubuntu простоянно статерил и сцена замирала. Чуть хуже был Windows на этом же OpenJDK. Oracle же справился лучше всех, с наименьшим количеством подвисаний.
Среди прочих, Oracle SE уложился в тот же объем ОЗУ что и OpenJDK.
Эта сцена содержит в себе лес и несколько десятков мобов. Километры деревьев постоянно растут и обновляют положения своих блоков.
Каждое дерево это отдельный тайл, но изначально имеют пониженный тикрейт, тикая лишь 1 раз в 20 игровых тиков. Ниже приведен график утилизации процессора на тикрейт сервера.
Ubuntu + OpenJDK и Windows Server с Oracle на борту не смогли запустить сервер в ранее обговоренными аргументами, поэтому в график не попали.
Чтобы все же запусить сервер, пришлось изменить флаги на:
-Xms4g -Xmx8G -server -XX:+UseCompressedOops -XX:+AggressiveOpts
Все три экземпляра по началу упирались в 100% процессора, но только Windows Server + AdoptOpenJDK не уронил сервер. После сбора мусора все нормализовалось до графика ниже.
При переходе от тикрейта в 60 до 70, на Ubuntu график загрузки процессора стал вести себя как синусоида, из-за чего среднее значение утилизации ЦП внезапно начало падать от роста сложности задачи. Из-за этого график пришлось остановить там, где он есть сейчас.
Вероятно, дело в отличиях планировщика Linux’a и Windows.
Выводы:
Не смотря на объективную разницу в ОС и дистрибутивах JRE, невозможно дать конкретную рекомендацию, которая объективно лучше для того, чтобы держать на нем сервер.
В данном случае, наверное, стоит выбирать ту операционную систему, с которой вы лучше знакомы.
Автор: ultra_vds
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/minecraft/344599
Ссылки в тексте:
[1] Windows VDS: https://ultravds.com/
[2] Источник: https://habr.com/ru/post/485624/?utm_source=habrahabr&utm_medium=rss&utm_campaign=485624
Нажмите здесь для печати.