Встроенная система профилирования в клиенте «Аллодов Онлайн»
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Встроенная система профилирования в клиенте «Аллодов Онлайн»

  • 465 views
Uploaded on

Докладчик: Дмитрий Пестов, программист команды клиента на проекте «Аллоды Онлайн».

Докладчик: Дмитрий Пестов, программист команды клиента на проекте «Аллоды Онлайн».

More in: Career , Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
465
On Slideshare
465
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
6
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Аллоды Онлайн: встроенная система профилирования
    игрового клиента
    Дмитрий Пестов
    программист, департамент клиентских игр
    www.mail.ru
  • 2. Что мы имели
    *
    * Насыщенная сцена: большое количество персонажей, статическая геометрия, террейн, эффекты
    www.mail.ru
    2
  • 3. Что мы хотели
    • На каждом кадре знать:
    • 4. Текущий FPS
    • 5. Средний
    • 6. Минимальный
    • 7. Показатели сцены:
    • 8. Количество персонажей
    • 9. Количество эффектов
    • 10. Загрузка процессора
    • 11. Расчет анимации
    • 12. Выполнение скриптов
    www.mail.ru
    3
  • 13. Что мы хотели
    • Видеть историю изменения:
    • 14. Текущий FPS
    • 15. Средний
    • 16. Минимальный
    • 17. Показатели сцены:
    • 18. Количество персонажей
    • 19. Количество эффектов
    • 20. Загрузка процессора
    • 21. Расчет анимации
    • 22. Выполнение скриптов
    www.mail.ru
    4
  • 23. Варианты
    • Использовать готовые решения
    • 24. Плюсы:
    • 25. Все сделано до нас
    • 26. Много удобных инструментов
    • 27. Минусы:
    • 28. Платность
    • 29. Негибкость
    • 30. Ориентация на статический анализ
    • 31. Проблемы с FinalRelease
    • 32. Тяжеловесность
    www.mail.ru
    5
  • 33. Варианты
    • Разработка своих инструментов
    • 34. Минусы:
    • 35. Написание велосипеда
    • 36. Время и деньги
    • 37. Плюсы:
    • 38. Максимальная адресность
    • 39. Гибкость
    • 40. Ориентация на динамический анализ
    • 41. Нет проблемы с FinalRelease
    • 42. Простота
    ?
    www.mail.ru
    6
  • 43. Разработка
    • Этапы развития
    • 44. Сбор статистики и визуализация в MainLoop
    • 45. Аккумуляция показаний счетчиков на протяжении нескольких кадров
    • 46. Сбор результатов, обработка, отображение
    • 47. Вынос системы визуализации в отдельное приложение
    • 48. Аккумуляция показаний счетчиков на протяжениии нескольких кадров
    • 49. Сбор результатов и отсылка пакетов
    • 50. Вынос сборщика в отдельный поток
    • 51. Расчет анимации
    • 52. Выполнение скриптов
    www.mail.ru
    7
  • 53. Что мы получили
    *
    * В реальном времени отображаются изменения FPS, сколько процессорного времени отъедается различными подсистемами, текущие показатели сцены
    www.mail.ru
    8
  • 54. Что мы получили
    *
    * Для удобства просмотра выполнена разметка рабочей области по времени и значению параметров
    www.mail.ru
    9
  • 55. Что мы получили
    *
    * В левой части для каждого графика указана легенда, в заголовке окна отображаются текущие показания количественных счетчиков
    www.mail.ru
    10
  • 56. Как с этим работать
    www.mail.ru
    11
  • 57. Как с этим работать
    www.mail.ru
    12
  • 58. Как с этим работать
    www.mail.ru
    13
  • 59. Настройка
    www.mail.ru
    14
  • 60. Пример из жизни
    *
    * Забегаем в зону с большим количеством NPC
    www.mail.ru
    15
  • 61. Пример из жизни
    *
    * Забегаем в зону с большим количеством NPC
    www.mail.ru
    16
  • 62. Пример из жизни
    *
    * Забегаем в зону с большим количеством NPC
    www.mail.ru
    17
  • 63. Победа?
    • Сильно помогает в работе
    • 64. В процессе разработки новой фичи
    • 65. Оценивать накладные расходы
    • 66. В процессе поиска причины падения производительности
    • 67. Определить виновную подсистему
    • 68. Ограничены возможности:
    • 69. Трудоемкий поиск низкоуровневой причины тормозов
    • 70. Возможен анализ только подконтрольных подсистем
    www.mail.ru
    18
  • 71. Развитие идеи
    • В любой момент нужно:
    • 72. Знать о потенциальных проблемах
    • 73. Видеть виновника проблем
    www.mail.ru
    19
  • 74. Мониторинг стека вызовов
    DebugLoop
    MainLoop
    SuspendThread
    GetContext
    Code
    Stack
    CaptureCallStack
    ResumeThread
    www.mail.ru
    20
  • 75. Мониторинг стека вызовов
    *
    * В реальном времени отображается статистика по функциям, где мы больше всего проводим времени
    www.mail.ru
    21
  • 76. Определение важности
    *
    199
    WinMain
    ...
    150
    *
    UI::MissionAddon::Init
    ...
    *
    112
    NDb::GetObject
    * Количество посещений (из 200 срезов за 2 сек.)
    www.mail.ru
    22
  • 77. Настройка
    Явно указываем, какой контекст вызовов нас интересует:
    www.mail.ru
    23
  • 78. Настройка
    Динамически добавляем счетчик производительности:
    www.mail.ru
    24
  • 79. Раскрутка стека
    • Использование фреймов
    • 80. Плюсы:
    • 81. Быстро и просто
    • 82. Большая степень достоверности
    • 83. Минусы:
    • 84. Зависимость от фреймов
    • 85. Зависимость от символьной информации*
    • 86. Вердикт:
    • 87. Неприменимо в FinalRelease
    * Необходима для сбора статистики
    www.mail.ru
    25
  • 88. Раскрутка стека
    • Раскрутка вручную*
    • 89. Минусы:
    • 90. Необходим нетривиальный анализ содержимого стека и кода
    • 91. Низкая степень детерминированности
    • 92. Плюсы:
    • 93. Независимость от фреймов
    • 94. Независимость от символьной информации
    • 95. Вердикт:
    • 96. Быстрый универсальный способ
    * С использованием эвристик
    www.mail.ru
    26
  • 97. Mail.Ru
    Разработчик игр и сервисов №1
    Крупнейший работодатель в отрасли
    Работайте у нас!
    job.gamedev@corp.mail.ru
    http://corp.mail.ru/career/vacancies/voronezh
    СПАСИБО!
    Дмитрий Пестов
    программист, департамент клиентских игр
    pestov@corp.mail.ru
    www.mail.ru