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

436 views
373 views

Published on

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

Published in: Career, Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
436
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

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

×