Новое ядро сервера

Pospelov

Создатель
Регистрация
03.01.18
Сообщения
76
Реакции
425
Производительность - одна из главных проблем в разработке таких высоконагруженных программ, как сервер нашего проекта. SkyMP - это не про кооператив. SkyMP - это про 1000 человек, играющих вместе на одной карте. Долгие годы эта цифра была просто мечтой. Сегодня мы делаем уверенные шаги на пути к её достижению.

Отчитавшись о Werewolf Update, разработчик сконцентрировал силы на реорганизации кодовой базы с целью добиться того, чтобы реализация соответствовала главной цели - была способна обрабатывать гигантские массивы данных, прежде всего от игроков.

Уже к следующему обновлению DataSearch Update были проведены серьёзные манипуляции, связанные с производительностью, чтобы поддерживать стабильную работу и быстродействие всех систем под грузом новых игровых данных, источником которых послужила специально созданная система DataSearch, являющаяся по сути агрегатором информации по всем доступным в игре объектам.

Ранее упоминалось о том, что сервер на старой версии не справился с нагрузкой, когда было добавлено более 7 тысяч типов предметов. Инициализация и запуск сервера с таким количеством данных занимал даже на мощной машине космические
180 секунд. Была предпринята попытка сократить это время на несколько порядков, переписав алгоритмы, отвечающие за доступ к внутреннему хранилищу таблиц предметов. Итак, время старта существенно сократилось и составило приблизительно 86 секунд. Дальнейшие изменения коснулись структур, инкапсулирующих функционал класса и подкласса предмета (классы - это Оружие, Броня, Зелья, Разное; подклассы - Меч, Кинжал, Двуручный меч). Сложность по времени в подавляющем большинстве операций была сокращена до константной O(1). Сократилось число динамических выделений памяти. Всё это привело к тому, что поставленная задача стала выполняться за невероятно малое время - 1 секунда. За счёт различных мелких корректировок удалось ещё сильнее сократить его - до 0.8 секунды.

Но оптимизация оказалась не единственным препятствием. Старое ядро сервера, верой и правдой служившее проекту на операционной системе Windows, оказалось неспособно работать на Unix-подобных ОС. В том числе, ОС Linux. Большое количество используемых фич оказались нестандартными, что недопустимо не только в кроссплатформерных проектах. Решено было в короткие сроки переписать ядро и часть самописных библиотек, которые так же отказались работать, а некоторые даже собираться, в новых условиях. В сумме изменения затронули более
9000 строк кода.

Однако, работа была проделана не зря. Новое ядро поддерживает Linux, как и требовалось. Кстати. Помните про 0.8 секунды? Более эффективная начинка ядра плюс работа на более совершенной операционной системе позволили снизить это время ещё в несколько раз - до невероятных 0.1 секунды. Огромный потенциал оптимизации был открыт и реализован, и работа в данном ключе, несомненно, подарит нам возможность наконец-то выпустить в свет сервер, где 1000 игроков будут играть в TES V вместе.
 
Сверху