Все дети любят хвастаться своими игрушками. Видимо, я еще не вырос ― поэтому мне очень хочется похвастаться новой системой для анализа быстродействия, недавно установленной на сервере Tranquility. Мы используем ее в ходе масштабных битв и других ситуаций, создающих большую нагрузку на сервер, чтобы узнать, на что именно расходуются системные ресурсы. Около месяца назад я записал дома небольшой видеоролик, которым хочу поделиться с вами. Встречайте: телеметрия на Tranquility.
Перевод записи:
Всем привет! Я CCP Veritas из команды Gridlock; сегодня у меня выдалась свободная минутка, и я хочу показать вам новую аналитическую систему на сервере Tranquility. Мы уже упоминали о ней раньше и даже показывали несколько скриншотов, но они не дают полного представления ― лучше один раз увидеть. В ходе последнего визита Совета игроков мы спросили их: «Хотите посмотреть на систему телеметрии, о которой мы рассказывали?» Сначала они равнодушно ответили: «Ну да, можно…», но когда они ее увидели, они просто обалдели. Надеюсь, вам она тоже понравится. Итак, давайте посмотрим …
Вот данные, соответствующие примерно десяти секундам боя, происходившего 25 мая в системе 3G-LHB, в котором принимало участие примерно 1150 человек. На экране показывается, чем именно был занят сервер в это время. Первое, на что я хочу обратить внимание ― высокие пики на графике. Это так называемый «тик» Destiny ― обработка игровой физики. Как можно видеть, она занимает довольно много времени. Давайте посмотрим на один из таких пиков ― как можно видеть, здесь показано примерно 350 миллисекунд. Из них мы тратим… нет, это не то… посмотрим сюда… тут можно видеть другие тики. Это значит, что узел ― «нода» ― не был выделен специально под этот бой; на нем обрабатываются и другие звездные системы. Но посмотрим на этот кусок. Здесь происходит несколько процессов одновременно; первый из них ― сбор данных для отправки игровым клиентам. Второй этап ― собственно отправка. То есть мы собираем информацию о происходящем, сообщаем ее игрокам и затем какое-то время занимаемся обсчетом физики. Именно так и выглядит стандартный тик системы Destiny.
Посмотрим сюда. Этот процесс длится 660 миллисекунд ― можно видеть, что отправка данных и обсчет физики занимают столько же времени, как и в остальных случаях, но сбор данных затянулся. Исходя из этой информации, мы можем понять, какие процессы масштабируются хорошо, а какие ― не очень. Пока у нас не появился этот инструмент, мы могли наблюдать лишь всю картину в целом. Мы знали, что обработка первой части в среднем занимает 200 миллисекунд, но не знали, при каких обстоятельствах это время увеличивалось, а при каких ― уменьшалось. Именно это и позволяет нам делать новая система. Мы также можем очень глубоко залезать в «недра» сервера. Возьмем любой процесс наугад. Ага, это сообщение от игрового клиента, вызывающее функцию «варп к чему-то». Обычно эта команда не занимает 335 миллисекунд, так что посмотрим повнимательнее. Как можно видеть, она выполняется достаточно регулярно. Вот объекты и значения атрибутов… Скорее всего ― исходя из того, что я знаю об этой функции ― это команда флоту; 300 миллисекунд уходит на то, чтобы опросить все входящие в его состав корабли, убедиться, что они выполняют команду и установить их скорость варпа. Именно этому и соответствует вот это значение атрибута. При выполнении этой команды флотом варп происходит со скоростью самого медленного корабля во флоте. Поэтому сначала необходимо запросить скорость варпа каждого корабля ― и именно ее выполнение занимает столько времени. В данном случае это не так страшно ― флоты совершают этот маневр не так часто, и мы можем себе позволить тратить, грубо говоря, 300 миллисекунд раз в пять минут. Но это хороший пример того, на что способна система телеметрии. Она работает на сервере Tranquility уже больше месяца; до этого мы постоянно использовали ее в ходе массового тестирования, но работать с ней в «живой» обстановке куда интереснее. Поэтому, ПОЖАЛУЙСТА, устройте бой помасштабнее! И не забудьте использовать систему уведомления о больших битвах, чтобы я знал о нем и мог получить эти данные (о, эти сладкие данные!) в ходе вашего сражения. Надеюсь, информация из этого видеоролика была вам интересна. Если у вас есть вопросы ― я буду рад на них ответить. Удачи!
Вот данные, соответствующие примерно десяти секундам боя, происходившего 25 мая в системе 3G-LHB, в котором принимало участие примерно 1150 человек. На экране показывается, чем именно был занят сервер в это время. Первое, на что я хочу обратить внимание ― высокие пики на графике. Это так называемый «тик» Destiny ― обработка игровой физики. Как можно видеть, она занимает довольно много времени. Давайте посмотрим на один из таких пиков ― как можно видеть, здесь показано примерно 350 миллисекунд. Из них мы тратим… нет, это не то… посмотрим сюда… тут можно видеть другие тики. Это значит, что узел ― «нода» ― не был выделен специально под этот бой; на нем обрабатываются и другие звездные системы. Но посмотрим на этот кусок. Здесь происходит несколько процессов одновременно; первый из них ― сбор данных для отправки игровым клиентам. Второй этап ― собственно отправка. То есть мы собираем информацию о происходящем, сообщаем ее игрокам и затем какое-то время занимаемся обсчетом физики. Именно так и выглядит стандартный тик системы Destiny.
Посмотрим сюда. Этот процесс длится 660 миллисекунд ― можно видеть, что отправка данных и обсчет физики занимают столько же времени, как и в остальных случаях, но сбор данных затянулся. Исходя из этой информации, мы можем понять, какие процессы масштабируются хорошо, а какие ― не очень. Пока у нас не появился этот инструмент, мы могли наблюдать лишь всю картину в целом. Мы знали, что обработка первой части в среднем занимает 200 миллисекунд, но не знали, при каких обстоятельствах это время увеличивалось, а при каких ― уменьшалось. Именно это и позволяет нам делать новая система. Мы также можем очень глубоко залезать в «недра» сервера. Возьмем любой процесс наугад. Ага, это сообщение от игрового клиента, вызывающее функцию «варп к чему-то». Обычно эта команда не занимает 335 миллисекунд, так что посмотрим повнимательнее. Как можно видеть, она выполняется достаточно регулярно. Вот объекты и значения атрибутов… Скорее всего ― исходя из того, что я знаю об этой функции ― это команда флоту; 300 миллисекунд уходит на то, чтобы опросить все входящие в его состав корабли, убедиться, что они выполняют команду и установить их скорость варпа. Именно этому и соответствует вот это значение атрибута. При выполнении этой команды флотом варп происходит со скоростью самого медленного корабля во флоте. Поэтому сначала необходимо запросить скорость варпа каждого корабля ― и именно ее выполнение занимает столько времени. В данном случае это не так страшно ― флоты совершают этот маневр не так часто, и мы можем себе позволить тратить, грубо говоря, 300 миллисекунд раз в пять минут. Но это хороший пример того, на что способна система телеметрии. Она работает на сервере Tranquility уже больше месяца; до этого мы постоянно использовали ее в ходе массового тестирования, но работать с ней в «живой» обстановке куда интереснее. Поэтому, ПОЖАЛУЙСТА, устройте бой помасштабнее! И не забудьте использовать систему уведомления о больших битвах, чтобы я знал о нем и мог получить эти данные (о, эти сладкие данные!) в ходе вашего сражения. Надеюсь, информация из этого видеоролика была вам интересна. Если у вас есть вопросы ― я буду рад на них ответить. Удачи!
CCP Veritas