LINUX.ORG.RU
ФорумAdmin

Ядро или производительность сервера

 ,


0

1

Есть арендованный VDS с виртуализацией KVM (2 vCPU Xeon'а по 2.4 ghz) под игровой сервер Half-Life Dedicated Server (HLDS) с установленным дистрибутивом GNU/Linux Centos 7.
Игра 1999 года. Сервер отдает snapshots (снимки состояния игрового мира) клиентам. В плане оценки производительности — нечто вроде FPS в играх.
От количества снимков в секунду (tickrates) зависит производительность сервера. Если количество снимков будет стабильным и колебаться от 900 до значений выше (обычно до 1100-1200), то игровой процесс будет ровным и комфортным. Если будут просадки до значений < 200 снимков-тикрейтов, то в эти моменты клиенты на сервере заметят пролагивание на 1-2 секунды (остановку процесса и его резкое возобновление с пропуском событий).
На моем пустом сервере (нет игроков онлайн, не установлены никакие плагины и модули) есть просадки, хоть и незначительные, а когда есть игроки, то бывают просадки до 90 снимков-тикрейтов в секунду (наблюдаются при этом лаги). При этом, когда сервер пустой, то нагрузку htop показывает 0.3% от ядра, а когда полон (32/32 игроков), то 5%. Почему же есть просадки?
Пробовал выставлять realtime-приоритет серверу — нагрузка процессора на пустом сервере становится ~ 15-20%. Просадок меньше, но они все равно есть.
Нашел с помощью гугла возможные варианты решений: отключить в ядре динамическое изменение значений таймера и установить частоту таймера в 1000Hz.
Как думаете, стоит ли игра свеч или я не на правильном пути и проблема другого плана? Нашел несколько источников, на которых есть подобная информация об этой настройке ядра. Так и не понятно зачем это и как оно поможет. Нужно ли тратить время на конфигурирование ядра и обучение подобному? Либо я копаю не в том направлении?



Последнее исправление: gemand (всего исправлений: 4)

Пальцем в небо. А с памятью что? С работой дисковой системы? А то можно поставить двигатель от боинга (cpu) но при этом крылья от кукурузника (хард/мозги)

anc ★★★★★
()
Ответ на: комментарий от anc

Вообще весьма удивительно что игру 1999-го, не тянет современное железо. Помню что-то подобное, игровые сервера, поднимали уж на куда более слабом железе.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от gemand

А локальную синтетику не пробовали? Что бы отмести возможные проблемы со стороны хостера.

anc ★★★★★
()
Ответ на: комментарий от anc

Вообще весьма удивительно что игру 1999-го, не тянет современное железо.

Тут нет ничего удивительного. Скорость игры очень сильно зависит от того как она написана. Помнится игрушка 90-х годов кажись Delta Force или что-то подобное. Так она лагает даже на современном железе.

Вообще очень странно, что автор пытается добиться гарантированной работы CPU в виртуалке. При любых нехватках ресурсов гипервизор начинает заимствовать с других виртуалок. По сему никто не гарантирует ресурсы на VDS.

Что касается HLDS и ихнего tickrates, то там до сих пор существует бага на стыке HLDS и линуксового шедуллера процессов. Если выполнение процесса hlds_linux не прибить гвоздями к конкретному ядру процессора, то в момент швыряния таски по ядрам просаживается tickrate. Что самое интересное, при запуске HLDS в FreeBSD такой проблемы не наблюдается.

iron ★★★★★
()

сетевые карты virtio?

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

а так реально освободи одно ядро от того, чтобы линукс туда скедулил процессы и отдай его игре.

https://stackoverflow.com/questions/13583146/whole-one-core-dedicated-to-sing...

dimon555 ★★★★★
()
Последнее исправление: dimon555 (всего исправлений: 1)

Сделай сервер на 7700k или xeon e3-1280 v6, будет в два раза быстрее. Важна производительность на отдельное ядро процессора.

anonymous
()

А нагрузку такую низкую показывает, потому что сбивающая с толку общая нагрузка проца отображается как 100% нагрузка одного ядра делённая на их количество.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.