Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

504 views

Published on

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

Published in: Career, Technology, Business
  • Be the first to comment

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

  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 />

×