Minecraft сервер: Windows vs Linux

в 10:13, , рубрики: minecraft, UltraVDS, Блог компании UltraVDS, Игры и игровые приставки, Серверное администрирование, системное администрирование
Minecraft сервер: Windows vs Linux - 1

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

Как и на всех остальных сравнительных тестах, у виртуальных машин не было соседей, на хосте всегда была запущена только одна ВМ.

Серверы запускались с аргументами:

-Xmx8G -server

На Windows Server Core был удален компонент Windows Defender, как в нашем образе с Windows VDS за 99 рублей. Для сравнения, вот что вы теряете, когда оставляете его включенным. 

Minecraft сервер: Windows vs Linux - 2

Раунд №1, генерация мира

В этом тесте генерируем мир. В качестве генератора выступал Geographicraft с установленным Biomes’O’Plenty, Dynamic Trees, PVG, worley caves, IC и BC.

Мир отнюдь не классический и генерируется заметно медленнее обычного. 

Мир размером в 2704 чанков был отгенерирован:

Minecraft сервер: Windows vs Linux - 3

Windows c AdoptOpenJDK отрывается от своих конкурентов на 5 секунд.

Раунд №2, старт сервера

Замер проходил в три прохода для каждой виртуальной машины. Каждый раз каждый из серверов завершал загрузку мира секунда в секунду по сравнению с прошлым результатом.

Minecraft сервер: Windows vs Linux - 4

OpenJDK на Windows что и OpenJDK на Linux показывают одинаковые результаты.

Раунд №3, занимаемая память

Процесс начинает потреблять тем больше памяти, чем больше установлено на нем ядер. Ниже приведена таблица занимаемой памяти процесса пустого сервера без загруженного на нем мира.

Minecraft сервер: Windows vs Linux - 5

Oracle JRE потребляла в среднем на 80-100 мегабайт больше на четном количестве ядер. Тоже самое касалось и AdoptOpenJDK, только на нечетном количестве ядер.

Linux не показывал такой странности.

Раунд №4, 32 курицы в коробке 2 на 2

Minecraft сервер: Windows vs Linux - 6

Сцена представляет из себя расчет коллизии 32 куриц в коробке 2 на 2. Сцена была подготовлена заранее и один и тот же мир был раскидан по серверам, чтобы все было честно.

Для этого теста было установлено одно ядро, а процессу выставлялся приоритет реального времени.

Minecraft сервер: Windows vs Linux - 7

Рабочий набор OpenJDK в этой сцене был на 40 мегабайт больше чем у соперников.

Minecraft сервер: Windows vs Linux - 8

Среднее потребление процесора у Oracle и AdoptOpenJDK одинаковое, но мусор Oracle при всех равных собирает чаще и интенсивнее, что чаще приводит ко всплескам процессорной активности.

Чтобы экстраполировать какое количество подобных сцен мы сможем обработать, давайте просто увеличим тикрейт сервера.

Minecraft сервер: Windows vs Linux - 9

В тесте с повышенной нагрузкой Ubuntu c OpenJDK сравнялся с Windows c AdoptOpenJDk, а Oracle догоняет.

Minecraft сервер: Windows vs Linux - 10

Под более высокой нагрузкой OpenJDK на Windows дал лучшие результаты, чем на Ubuntu.

Сервер OpenJDK на Ubuntu простоянно статерил и сцена замирала. Чуть хуже был Windows на этом же OpenJDK. Oracle же справился лучше всех, с наименьшим количеством подвисаний.

Minecraft сервер: Windows vs Linux - 11

Среди прочих, Oracle SE уложился в тот же объем ОЗУ что и OpenJDK.

Раунд №5, 64*64 чанка и Dynamic trees

Minecraft сервер: Windows vs Linux - 12

Эта сцена содержит в себе лес и несколько десятков мобов. Километры деревьев постоянно растут и обновляют положения своих блоков.

Каждое дерево это отдельный тайл, но изначально имеют пониженный тикрейт, тикая лишь 1 раз в 20 игровых тиков. Ниже приведен график утилизации процессора на тикрейт сервера.

Minecraft сервер: Windows vs Linux - 13

Ubuntu + OpenJDK и Windows Server с Oracle на борту не смогли запустить сервер в ранее обговоренными аргументами, поэтому в график не попали.

Чтобы все же запусить сервер, пришлось изменить флаги на:

-Xms4g -Xmx8G -server -XX:+UseCompressedOops -XX:+AggressiveOpts

Все три экземпляра по началу упирались в 100% процессора, но только Windows Server + AdoptOpenJDK не уронил сервер. После сбора мусора все нормализовалось до графика ниже.

Minecraft сервер: Windows vs Linux - 14

При переходе от тикрейта в 60 до 70, на Ubuntu график загрузки процессора стал вести себя как синусоида, из-за чего среднее значение утилизации ЦП внезапно начало падать от роста сложности задачи. Из-за этого график пришлось остановить там, где он есть сейчас.

Вероятно, дело в отличиях планировщика Linux’a и Windows.

Выводы:

Не смотря на объективную разницу в ОС и дистрибутивах JRE, невозможно дать конкретную рекомендацию, которая объективно лучше для того, чтобы держать на нем сервер.

В данном случае, наверное, стоит выбирать ту операционную систему, с которой вы лучше знакомы.

Minecraft сервер: Windows vs Linux - 15

Автор: ultra_vds

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js