Minecraft сервер: Windows vs Linux

Продолжая серию статей что-то против чего-то, мы наконец рассмотрим что-то полезное, а именно сервер Minecraft. Рассмотрим какая операционная система и какая ява все же лучше для того, чтобы хостить лучшую игру человечества. Для сравнения взяты Ubuntu 18.04 LTS и Server Core 2019. На Ubuntu был установлен OpenJDK, а на Windows — Oracle Java и AdoptOpenJDK.
Как и на всех остальных сравнительных тестах, у виртуальных машин не было соседей, на хосте всегда была запущена только одна ВМ.
Серверы запускались с аргументами:
-Xmx8G -server
На Windows Server Core был удален компонент Windows Defender, как в нашем образе с Windows VDS за 99 рублей. Для сравнения, вот что вы теряете, когда оставляете его включенным.

Раунд №1, генерация мира
В этом тесте генерируем мир. В качестве генератора выступал Geographicraft с установленным Biomes’O’Plenty, Dynamic Trees, PVG, worley caves, IC и BC.
Мир отнюдь не классический и генерируется заметно медленнее обычного.
Мир размером в 2704 чанков был отгенерирован:

Windows c AdoptOpenJDK отрывается от своих конкурентов на 5 секунд.
Раунд №2, старт сервера
Замер проходил в три прохода для каждой виртуальной машины. Каждый раз каждый из серверов завершал загрузку мира секунда в секунду по сравнению с прошлым результатом.

OpenJDK на Windows что и OpenJDK на Linux показывают одинаковые результаты.
Раунд №3, занимаемая память
Процесс начинает потреблять тем больше памяти, чем больше установлено на нем ядер. Ниже приведена таблица занимаемой памяти процесса пустого сервера без загруженного на нем мира.

Oracle JRE потребляла в среднем на 80-100 мегабайт больше на четном количестве ядер. Тоже самое касалось и AdoptOpenJDK, только на нечетном количестве ядер.
Linux не показывал такой странности.
Раунд №4, 32 курицы в коробке 2 на 2

Сцена представляет из себя расчет коллизии 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.
Раунд №5, 64*64 чанка и Dynamic trees

Эта сцена содержит в себе лес и несколько десятков мобов. Километры деревьев постоянно растут и обновляют положения своих блоков.
Каждое дерево это отдельный тайл, но изначально имеют пониженный тикрейт, тикая лишь 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, невозможно дать конкретную рекомендацию, которая объективно лучше для того, чтобы держать на нем сервер.
В данном случае, наверное, стоит выбирать ту операционную систему, с которой вы лучше знакомы.

Sony объявила главные игры этой недели для консоли PlayStation 5
Настольная игра по мотивам сериала Space King собрала более 380 миллионов рублей
Sega объяснила причину отмены своего амбициозного проекта Super Game
Несколько СМИ приняли за правду розыгрыш Mega64 об анонсе PlayStation 6
Sony готовит масштабное обновление для PlayStation 5
Стал известен размер Silent Hill Townfall на диске
Книга «Охота за игроком. Основы маркетинга для разработчиков» ушла на верстку
Издание Polygon назвало главную проблему премии Игра года на фоне доминирования GTA VI