Приветствия обитателям Транквилити!
Несколько недель назад мы провели эвент в Таме. Девелоперы и ГМы вылезли из Поларисов и палили по всем желающим. Это было потрясающе забавно для нас, и если верить обратной связи — вам тоже понравилось. Сегодня я хочу поделиться с вами технической стороной этого мероприятия и рассказать о том, что видно по поводу нашей борьбы с лагом и что день грядущий нам готовит.
Для начала посмотрим на работу сервера под нагрузкой нас самих и нескольких сотен наших партнеров по обмену патронами ценных клиентов.
Неплохой график. Что-то типа такого я хотел бы видеть во время большого боя. Железо получило хорошую нагрузку, но фактически почти что не было перегружено — разве что в момент, когда впрыгнул большой флот. 800+ человек в активном бою, и сервер идеально справляется с этой задачей. Таким образом я — счастливая панда, ведь не так давно это было просто невозможно и непредставимо. Особенно если помнить, что это было в космосе с положительным СС, где сервер дополнительно нагружен, отслеживая акты агрессии в дополнение к непосредственно бою.
Две вещи сошлись вместе, чтобы достичь этого результата: очень большие усилия по оптимизации кода на серверной стороне и крутое железо, которое мы подобрали. Тама работала именно на таком железе — нашей специальной укреплённой ноде. Она уже несколько месяцев служит как один из серверов для особых случаев (флотовых боёв), о которых нас предупреждают через соответствующую форму. Я уступаю место у микрофона CCP Red Button, который расскажет подробнее об этом электронном монстре.
Приветствую.
Как и сказал CCP Veritas, в последние 12-18 месяцев мы активно работаем над производительностью флотовых боёв. Те, кто ездил на фанфест в этом году, вероятно видели, как CCP Yokai и CCP Atlas раскрыли тайну некоторых мер, которые мы для этого предприняли. С точки зрения железа мы были ощутимо ограничены простым фактом: сервер Евы в основном — однопоточное приложение, и поэтому его производительность ограничена частотой процессора. В прошлом мы могли опираться на постоянное и непрерывное возрастание этих частот год за годом, но сейчас парадигма больше опирается на «горизонтальное» ускорение при помощи нескольких ядер. Плохие новости для флотовых боёв и старой доброй однопоточной Евы.
К счастью, были и некоторые улучшения в дизайне материнских плат, в скорости работы памяти и в архитектуре процессоров. Это позволило нам выжать из серверов ещё чуть-чуть. На самом деле несколько больше, чем чуть-чуть — если считать последнюю пару лет. Мы достигли 40% прироста производительности на определённых задачах при сравнении последнего поколения железа (Westmere-EP@3.2ГГц) с более старым (Wolfdale-DP@3.3ГГц), на котором сейчас живёт бОльшая часть Транквилити. Кстати, прокси-слой Транка недавно пережил радикальную переделку и теперь живёт на двойных процессорах последнего поколения, на четырехядерных блейдах 3.6ГГц Westmere-EP. В комбинации с оптимизацией серверного кода это потрясающее изменение, обеспечивающее большое увеличение в производительности. SQL-слой тоже вскоре будет проапгрейжен, и... но это уже материал для другого девблога :) сейчас мы говорим о флотовых боях.
Для того, чтобы обеспечивать ещё более масштабные столкновения, мы — по указанным выше причинам — сосредоточились на тактовой частоте процессора, и создали вот такого франкенштейна на жидкостном охлаждении, который должен работать между 4.6 и 4.8 ГГц. На последнем фанфесте его уже показывал CCP Yokai
К сожалению (или к счастью) этот конкретный монстрик ни разу не работал за пределами лаборатории, потому что когда мы его построили — мы получили более правильный сервер от одного из наших основных поставщиков, и эта поставка была намного более удобна для дата-центра (то есть, не протекала), могла достичь тех же частот и работала на традиционном воздушном охлаждении (хотя я не стал бы называть его традиционным). Я скажу, впрочем, что польза от создания этого жидкостного монстрика была в кайфе от постройки, и когда я приходил на работу ранним утром — я часто находил одного из инженеров-авторов в задней комнате, любовно поглаживающего своё творение.
Короче, мы разбили копилку и купили в датацентр технологическую жемчужину с воздушным охлаждением. В комплекте с ним шли очень строгие требования к охлаждению (например, 10 по Цельсию на входящем потоке и т. д.) так что нам пришлось потрудиться, чтобы обеспечить их, переставив вентиляторы и улучшив охлаждение в датацентре, но в конце концов он встал и вот уже несколько месяцев обслуживает флотовые бои. С приличными результатами.
К сожалению, мне запрещено вдаваться в детали по поводу моделей, установок, характеристик помимо сообщения, что оно работает на 4.4ГГц, основано на Ксеоне и очень, ОЧЕНЬ круто. Сервер недоступен по официальным каналам, так же как и процессор, кроме OEM для отдельных приложений. За эту производительность можно убивать и умирать — и по странному совпадению именно для этого мы и используем данный девайс, организуя на нём массовые жертвоприношения...
Таким образом, комбинируя эффективность сверхсовременной архитектуры «железа» и тактовую частоту суперноды мы достигли 80% прироста производительности при сравнении со стандартным железом Транквилити. Что, надеюсь, прямо отражается на качестве вашей игры.
Возвращаю микрофон обратно CCP Veritas:
Сервер — это ещё не всё: в Еве есть нечто большее, чем сервера, работающие в уютных ящиках с комфортабельным охлаждением и бесперебойной подачей тока. Без маленького кусочка софта, который каждый стартует на своей любимой машине — без клиента Евы — ничего бы не было. И, как может подтвердить каждый в такомм бою, клиенту тоже есть в чём помочь. Будучи логистом, я считаю, что игра вполне удобна, но как только мы достигаем порога в 800+ человек, вещи становятся не настолько классными. Работоспособными, но не плавными. В Crucible мы проанализировали некоторые основные причины снижения производительности и начали устранять наиболее простые из них.
Те, кто отслеживал команду Гридлок — помнят, что мы работали исключительно с сервером. Результат выше — удовольствие для нас. Мы достигли момента, когда (для больших флотовых боёв) — сервер больше не является «бутылочным горлышком» для гладкого игрового процесса. В планах всё ещё есть несколько проектов серверной стороны, их ещё предстоит приоритизировать, но мы можем уверенно сказать, что переключаемся на работу с клиентом. В течение следующего года ожидайте ещё нескольких движений в сторону более отзывчивого клиента.
Чтобы дать вам понять, что именно было сделано за год борьбы с лагом на серверной стороне, я сходил в архивы и принёс несколько боёв примерно такого же размера за ноябрь 2010-го года.
R-6KYM, 5 ноября 2010
Вот график, который мне не нравится. Полтора часа бедная железяка перегружена без малейших проблесков надежды. Судя по отзывам игроков, логистам было крайне тяжело получать бродкасты и лочить цели, поэтому цепь откачки была крайне слаба
Это как раз и есть потеря производительности, ломающая игровую механику. Именно это мы и хотим починить. Да, в Таме этого не было, и наша цепь откачки была нерушима. Ну, пока нас не расплющили.
А ещё, как видите, график неожиданно обрывается. Это потому что затяжные проблемы вынудили нас нежно и с любовью пристрелить его. Он даже не понял, что произошло.
CYB-BZ, 7 ноября 2010
Ой... это просто плохо. Четыре часа бедные хомячки бегают на полной скорости, а потом — дохнут от инфаркта. :( Кто-нибудь, позвоните в общество защиты животных. Ни в коем случае не «чистая» игра, и игроки подтверждали, что флот ДРФ был разделён и неспособен реварпнуть на оптимал — монстр-лаг цепко держал их в лапах.
Два этих боя — не одинаковые, но я надеюсь, что сравнение показывает, насколько большой выгоды мы добились, вложившись в апгрейд железа и оптимизацию железа и софта. Удерживать и обеспечивать единую полномасштабную вселенную — предмет нашей величайшей гордости, а массовые бои — очевидно-необходимая сущность этой вселенной. Я надеюсь, что вам нравился последний год улучшений производительности не меньше, чем нам нравилось их обеспечивать.
Перевод © Clancy