Презентацию к лекции Вы можете скачать здесь.
Каждый, кто работал с эмулятором для разработки Android-приложений, знает, что даже на современных компьютерах эмулятор загружается и работает очень медленно. Intel Hardware Accelerated Execution Manager (Intel HAXM) – это решение данной проблемы, использующее аппаратные возможности виртуализации и позволяющее значительно ускорить работу эмулятора Android.
Intel HAXM работает в паре с эмулятором для х86 устройств. При этом, виртуальное устройство будет работать со скоростью, приближенной к скорости работы реального устройства, что поможет сократить время на запуск и отладку приложения.
Прежде, чем установить Intel HAXM, необходимо убедиться, что компьютер удовлетворяет системным требованиям:
Intel HAXM можно установить как вручную (скачав с сайта software.intel.com/ru-ru/android/), так и используя Android SDK Manager.
В процессе установки будет предложено определить объем выделяемой оперативной памяти. Можно оставить значение, предложенное по умолчанию. Если в процессе работы потребуется изменить это значение, нужно просто запустить установку еще раз.
Также во время установки может возникнуть предупреждение о том, что виртуализация не включена. В этом случае нужно проверить настройки в BIOS, возможно, виртуализация поддерживается системой, но по умолчанию отключена.
Для того, чтобы проверить, что все установлено верно и работает, необходимо в командной строке выполнить: sc query intelhaxm. После выполнения данной команды будет показан текущий статус службы (Рис. 3.1).
(рис 3.1) В командной строке показан статус службы Intel HAXM
Теперь необходимо создать новое виртуальное устройство с помощью AVD Manager. В окне свойств следует добавить обязательный параметр в раздел Hardware – GPU Emulation (Рис. 3.2).
(рис 3.2) Окно свойств при создании нового эмулятора
Осталось запустить и проверить, все ли настроено верно. Для этого нужно выбрать созданный эмулятор, запустить его и в настройках посмотреть название устройства. Если все было сделано правильно, то в поле Model number будет написано "Android SDK Build for x86" (Рис. 3.3).
(рис 3.3) Окно настроек созданного эмулятора
Теперь эмулятор начал работать быстрее, причем настолько, что можно прямо из него просматривать видео с Youtube в режиме реального времени, а не как раньше – в режиме слайд-шоу.
Программы, особенно для мобильных устройств, могут и должны быть энергоэффективными, однако разработчики зачастую не уделяют этому показателю должного внимания. Для мобильных устройств большое значение имеет экономный расход электроэнергии, благодаря которому продлевается срок работы от аккумулятора. Поэтому пользователю предпочтительно использовать более энергоэффективные приложения. Зачастую разработчики приложений создают свои программы на настольных ПК, где показатели потребления электроэнергии намного менее существенны, чем производительность. Тем не менее, если не обращать внимания на вопросы потребления энергии, запуск программы на мобильном устройстве может обернуться для пользователя неприятной неожиданностью. Intel Energy Checker SDK измеряет количество работы, производимой системой, и соответствующее потребление энергии и позволяет тем самым определить, насколько эффективна система в части энергопотребления, и помочь в оптимизации приложения.
Уровень потребления, безусловно, является важным показателем энергоэффективности, но сам по себе он не дает полного представления о работе приложения. Малопотребляющие системы, выполняющие при этом малый объем полезной работы, могут быть менее эффективными, чем более мощные системы, способные осуществлять более значительные вычисления. Более того, даже в рамках одной системы не существует единой метрики – в зависимости от приложения ключевые показатели могут разниться. Intel Energy Checker SDK является гибким инструментом, позволяющим разработчикам проводить измерения и контроль энергоэффективности системы.
В Intel Energy Checker SDK широко используется понятие "энергоэффективность". Повсеместно принятого определения энергоэффективности не существует, но в Intel Energy Checker SDK используется следующее:
Энергоэффективность = Работа / Энергия
Под термином "работа" понимается объем полезной работы, выполненной приложением. Простого, четкого и однозначного определения термина "полезная работа" также не существует; то, что считается полезной работой в одной программе, может не считаться таковой в другом приложении. Например, количество полезной работы, проделываемое платежным приложением, отличается от количества полезной работы, выполняемой приложением-видеосервером, программой доступа к базе данных или почтовым сервером.
Intel Energy Checker SDK API предоставляет доступ к показателям проделанной приложением полезной работы с помощью простой программной оснастки. Решение остается за разработчиком. Например, можно считать работу определенных компонентов программного видеопроигрывателя, выполняющих какую-либо работу для пользователя (например, декодирование видео), полезной работой, а действия других компонентов (получающих доступ к ресурсам, ожидающих ввода, выполняющих синхронизацию) не будут считаться полезными. Intel Energy Checker SDK позволяет разработчикам определять, какие замеры "полезной работы" важны для конкретного приложения, и предоставляет доступ к ним с помощью простого API.
Intel Energy Checker SDK API предоставляет функции экспорта и импорта счетчиков в приложения. Счетчики хранят информацию о количестве событий или процессов, другие приложения могут считывать показания этих счетчиков и осуществлять действия на основе их текущих значений. Ядро Intel Energy Checker API состоит из пяти функций, которые позволяют открывать, повторно открывать, читать, записывать и закрывать счетчики.
Первым этапом использования Intel Energy Checker SDK для определения энергоэффективности приложения является создание и применение счетчиков, определяющих объем полезной работы в программе. Счетчик – это 8-байтовая переменная, в которой хранится количество возникновений определенного события. В языке программирования C для этого используется тип данных unsigned long. Разработчик может создать один или несколько счетчиков в ходе инициализации программного обеспечения. После этого можно создать контейнер для счетчиков, называемый "Productivity Link" (PL). Каждый PL может содержать до 512 счетчиков, одновременно может быть открыто до 10 разных PL, но для большинства программ будет достаточно гораздо меньшего числа счетчиков и PL.
Вторым этапом расчета энергоэффективности приложения является измерение объема энергии, израсходованной при работе программы. Для этого в Intel Energy Checker SDK применяются два средства, входящие в пакет SDK: Energy Server (ESRV) и Temperature Server (TSRV). ESRV используется для отслеживания потребления электроэнергии по данным внешних измерительных устройств, а TSRV отслеживает показатели температуры по данным термодатчиков.
В состав Intel Energy Checker SDK, помимо уже упомянутых средств, входят еще две вспомогательные программы:
(рис 3.4) PL GUI Monitor
После оснастки кода программы необходимыми счетчиками разработчик может собирать информацию о том, как приложение расходует электроэнергию, и применять необходимые меры для оптимизации. Разработчики приложений для мобильных устройств могут работать над оптимизацией потребления электроэнергии в различных областях:
Хотя изначально Intel Energy Checker SDK создавался для работы в дата-центрах, его можно использовать на клиентских или мобильных платформах. Он может работать в операционных системах Windows, Linux, Solaris и MacOS.
Несмотря на то, что изначально Intel Energy Checker SDK был призван облегчить анализ энергоэффективности и оптимизацию приложений, его можно использовать для доступа ко всем счетчикам, необходимым разработчикам или пользователям. Например, разработчики по своему усмотрению могут использовать механизм счетчиков для наблюдения за метриками качества обслуживания или счетчиками производительности.
Инструмент Intel Power Monitoring Tool отслеживает данные о производительности и энергопотреблении на Android-устройствах и помогает упростить следующие задачи для разработчиков и проектировщиков Android:
При создании энергоэффективных систем или приложений разработчики программного обеспечения должны собирать статистические данные для выявления и диагностики проблем с энергопотреблением и производительностью. К несчастью, на изучение ключевых данных об энергопотреблении среди огромных массивов имеющихся данных тратится слишком много времени. Инструмент Intel Power Monitoring Tool позволяет собирать необходимые данные об энергопотреблении через определенные интервалы времени. При этом состояния энергопотребления системы и приложений записываются в файл журнала. Затем разработчик программного обеспечения может использовать данные из журнала для выявления и диагностики проблем с энергопотреблением и производительностью.
Для операционной системы Android характерно то, что большинство приложений работают в полноэкранном режиме, чтобы обеспечить более удобное взаимодействие пользователя с устройствами. Из-за этого разработчикам программного обеспечения труднее отслеживать статистические данные системы и приложений в режиме реального времени. Intel Power Monitoring Tool помогает преодолеть эти трудности, обеспечивая в режиме реального времени мониторинг ключевых данных об энергопотреблении из системы и приложений.
Intel Power Monitoring Tool собирает минимальный набор данных об энергопотреблении в фоновом режиме, не вмешиваясь в работу системы. Дополнительная загрузка процессора при использовании инструмента Intel Power Monitoring Tool достаточно мала (не более 3%).
Intel Power Monitoring Tool предоставляет опытным и начинающим Android-разработчикам три основные возможности:
Следующие компоненты мобильных устройств потребляют большую часть энергии и сильнее всего влияют на продолжительность работы устройства от аккумулятора:
Поведение операционной системы и приложений также оказывает большое влияние на общее энергопотребление устройства и время работы от аккумулятора. С помощью инструмента Intel Power Monitoring Tool разработчики могут оценить характеристики энергопотребления устройства в режиме ожидания (когда выполняются только операционная система и службы) и отследить влияние определенного приложения на общее энергопотребление устройства.
Помимо данных об энергопотреблении на уровне компонентов Intel Power Monitoring Tool собирает данные об энергопотреблении для выполняемого приложения
Intel Power Monitoring Tool позволяет отслеживать работу системы и приложения в режиме реального времени через настраиваемые интервалы выборки. Во время работы системы Android или приложения этот инструмент отображает небольшое окно (Рис. 3.5) в правой части строки состояния, где показаны ключевые данные об энергопотреблении. Данные в окне обновляются практически в режиме реального времени и представлены в следующем формате:
(рис 3.5) Мониторинг системы и приложения в режиме реального времени Во время выполнения системы Android и приложений Power Monitoring Tool запускает в фоновом режиме службу профилирования, которая очень незначительно влияет на использование ресурсов.
Служба профилирования запускается и останавливается нажатием на значок приложения Intel Power Monitoring Tool. Когда пользователь останавливает службу профилирования энергопотребления, во внутренней памяти или на внешнем запоминающем устройстве создается файл журнала с именем "powermonitor.log". В этом файле содержатся все данные об энергопотреблении, которые были получены в течение интервала выборки между запуском и остановкой службы профилирования.
Частота выборки может настраиваться пользователем. В следующей таблице показано, какой объем дополнительных ресурсов использует инструмент при разных частотах выборки:
| Sampling Rate | CPU Utilization overhead |
|---|---|
| 1 seconds | 2,83% |
| 2 seconds | 1,07% |
| 3 seconds | 0,06% |
| 5 seconds | 0,05% |
| 10 seconds | 0,02% |
Согласно этой таблице при интервале выборки, равном 1 секунде, дополнительная нагрузка составляет не более 3 %.
Также можно включить функцию электронной почты, чтобы после остановки службы профилирования файл "powermonitor.log" отправлялся на указанный почтовый адрес. Это упрощает сбор и извлечение данных с устройства на компьютер.
Инструмент Intel Power Monitoring Tool позволяет опытным разработчикам программного обеспечения и обычным пользователям отслеживать, выявлять и диагностировать проблемы с энергопотреблением и производительностью на уровне системы. Благодаря функции мониторинга в режиме реального времени разработчики получают простую и понятную информацию, помогающую найти проблему. Функция записи в журнал позволяет отслеживать данные за определенные периоды для более глубокого анализа. Разработчики программного обеспечения экономят свое время, поскольку собирается минимальный набор данных об энергопотреблении и не нужно просматривать большие массивы данных, чтобы найти ключевую информацию об энергопотреблении и производительности. При этом дополнительная нагрузка, связанная с профилированием данных, очень мала.
Приложение было выпущено через портал Google Market в середине января 2012 года и поддерживает следующие версии Android: GingerBread, HoneyComb, IceCreamSandwich.
Установить приложение можно с помощью портала Android Market или с помощью команды adb_install -r com.intel.PowerMonitoringTool.apk
После установки будут доступны три основные возможности Intel Power Monitoring Tool.
(рис 3.6) Запуск функции профилирования
(рис 3.7) Мониторинг в режиме реального времени
(рис 3.8) Мониторинг приложенияРазработчики графических приложений хорошо знают, как важны в их работе удобные средства по анализу построения кадра и производительности рендеринга (отрисовки кадра). Современные графические приложения очень сложны, и со временем эта сложность только увеличивается. Для того, чтобы программисты оптимально использовали возможности устройств, им нужны утилиты, помогающие обнаруживать ошибки и узкие места в их приложениях, ограничивающие производительность.
GPU (Graphics Processing Unit – графический процессор) и CPU (Central Processing Unit – центральный процессор) в пределах каждого кадра выполняют множество различных операций графического конвейера, и общая производительность зависит от наиболее медленного участка. Именно поэтому удобные средства отладки так важны, ведь разобраться в сотнях вызовов функций, происходящих за несколько миллисекунд, без соответствующих инструментов очень сложно.
Intel Graphics Performance Analyzers (GPA) состоит из набора программных средств, предназначенных для мониторинга производительности и отладки графических программ и компьютерных игр. Данная версия состоит из программы мониторинга реального времени – Intel System Analyzer, и программы анализа и отладки перехваченных графических фреймов – Intel Frame Analyzer. Важно, что данные программы не требует перекомпиляции или какого-либо предварительного инструментирования графического приложения, все необходимые вмешательства делаются в момент запуска. Инструмент Intel Platform Analyzer визуализирует профиль выполнения CPU- и GPU-задач, но в отличие от System Analyzer и Frame Analyzer он может потребовать изменения исходного кода приложения.
Все компоненты Intel GPA построены на основе сетевой удаленной отладки. Это означает, что на целевой машине, где планируется запускать приложение, также должно присутствовать специальное приложение-агент (Intel GPA Server). Клиентские приложения Intel System Analyzer и Intel Frame Analyzer запускаются на удаленной машине и связываются с сервером по сетевому протоколу TCP/IP. Главными преимуществами удаленной отладки являются:
Текущая версия продукта (2012 R4) разработана для устройств на базе процессора Intel и поддерживает различные операционные системы. В следующей таблице представлены поддерживаемые платформы:
| Клиентская ОС | Целевая ОС | Графический API приложения |
| Microsoft Windows 7/8 | Microsoft Windows 7/8 | Microsoft DirectX (версия не ниже 9) |
| Microsoft Windows 7/8 | Google Android | OpenGL-ES |
| Ubuntu | Google Android | OpenGL-ES |
Рассмотрим подробнее каждую из утилит, входящих в пакет.
Intel GPA Monitor.
Работа по анализу и отладке приложения начинается с инструмента Intel GPA Monitor. С его помощью происходит запуск анализируемого приложения (Рис. 3.9) и осуществляются настройки Intel GPA System Analyzer HUD (Head-Up Display).
Intel GPA System Analyzer.
Intel GPA System Analyzer предназначен для мониторинга в реальном времени различных параметров приложения. Данный инструмент предоставляет разработчику возможность следить за FPS (Frame Per Second – кадровая частота) приложения и визуально сопоставлять падение FPS c показаниями графиков, отражающих различные параметры DirectX, CPU или GPU. Поддерживаются три уровня детализации графиков. Разработчик может оценить степень зависимости приложения от CPU или GPU, эффективность распараллеливания (баланс загрузки различных CPU ядер), посмотреть, что происходит в вызовах DirectX (Рис. 3.10).
(рис 3.9) Intel GPA Monitor
(рис 3.10) Intel GPA System Analyzer
В компьютерной графике важным понятием является "шейдер". Он представляет собой программу, определяющую параметры изображения и выполняющуюся на графическом процессоре. Шейдеры бывают трех типов:
Intel GPA System Analyzer позволяет проводить эксперименты на живом, работающем приложении. В качестве наиболее популярных и показательных экспериментов реального времени следует отметить:
(рис 3.11) Эксперимент реального времени Wireframe
(рис 3.12) Эксперимент реального времени Disable Alpha BlendingС помощью Intel GPA System Analyzer можно останавливать приложение. Используя остановку, разработчик может "поймать" нужную сцену или эффект для последующего перехвата интересующего графического кадра. Intel GPA System Analyzer позволяет перехватить и записать текущий фрейм (Рис. 3.13) для последующего детального анализа в программе Intel GPA Frame Analyzer. Перехват предусматривает сохранение всех вызовов DirectX и всех используемых приложением графических ресурсов.
Intel GPA Frame Analyzer.
Intel GPA Frame Analyzer является важнейшим инструментом для детального изучения структуры перехваченного фрейма (работа производится с одним кадром). В основе представления информации о фрейме лежит концепция DirectX команд, выполняющих работу на GPU. В Intel GPA такие команды названы термином Эрг (Erg). Большинство Эргов представляют собой функции рисования (Draw Calls) библиотеки DirectX. Intel GPA Frame Analyzer позволяет воспроизвести (проиграть) все Эрги с целью определения их длительности и их вклада в суммарное время фрейма (Frame Time).
(рис 3.13) Выбор перехваченного кадра для анализа в Intel GPA Frame Analyzer
В Visualization Panel отображается гистограмма, наглядно представляющая продолжительность Эргов (Рис. 3.14). Предусмотрена возможность изменять единицы измерения по осям X, Y. Проблемные этапы обработки сцены наиболее четко видны в виде X: GPU Duration Y: GPU Breakdown (по оси X откладывается время выполнения Эрга, по оси Y – детализированное время выполнения, то есть время выполнения пиксельных, вершинных и геометрических шейдеров).
(рис 3.14) Гистограмма продолжительности эргов
Intel GPA Frame Analyzer делает несколько попыток проиграть фрейм и показывает усредненную длительность Эргов и степень разброса (девиацию) измерений относительно среднего значения.
Разработчик может выделять индивидуальные элементы фрейма. Intel GPA Frame Analyzer при этом выполняет подсветку выбранных элементов в режимах закраски цветом (highlighted) или подсвеченной геометрии (highlighted wireframe). Таким образом, довольно легко определить, какие Эрги отвечают за тот или иной компонент финальной картины (Рис. 3.15). Для любого выбранного Эрга Intel GPA Frame Analyzer позволяет инспектировать текстуры и поверхности вывода с указанием частоты использования текстуры. Еще одним важным элементом предлагаемым пользователю, является доступ к вершинным и пиксельным шейдерам на уровне исходных кодов (на языке High Level Shader Language – HLSL) и ассемблера (Рис. 3.16).
Выбрав указанные Эрги, разработчик может провести над ними эксперименты. Например, можно переключить пиксельный шейдер на простой (Simple Pixel Shader), применить отсечение (1x1 Scissor Rect), выполнить замену текстур (2x2 Textures). Применяя эксперименты вместе или по отдельности, разработчик наблюдает, как изменяется высота Эргов на гистограмме, и видит в панели Scene Overview старое значение длительности выполнения Эрга (Old), новое значение (New), численную разницу (Delta) и дисперсию (Variance) (Рис. 3.17).
(рис 3.15) Подсветка выбранного эрга в режиме Highlighted
(рис 3.16) Исходный код выбранного эрга на языке HLSL
Набор отладочных средств Intel GPA Frame Analyzer включает просмотр метрик для всего фрейма в целом (Frame Overview), просмотр состояний DirectX (States), просмотр шейдеров и шейдерных констант (Shaders), просмотр текстур (Texture), лог вызовов DirectX (API Log) и другие.
Intel GPA Platform Analyzer.
GPA Platform Analyzer позволяет визуализировать профили выполнения различных задач и подзадач исследуемого приложения на платформе в целом (то есть и на CPU, и на GPU). Поскольку использование многоядерных процессоров в персональных компьютерах стало повсеместным, для достижения наилучшей производительности необходимо эффективно использовать все доступные вычислительные ресурсы и оптимизировать нагрузку между всеми ядрами CPU и видеокартой.
(рис 3.17) Изменение длительности Эргов
GPA Platform Analyzer позволяет:
Оптимизация приложения.
Предполагается, что оптимизация приложения должна начинаться с рассмотрения общей производительности приложения при помощи Intel GPA System Analyzer. Первичный анализ сцены с низким FPS должен выявить, чем ограничена производительность приложения – CPU или GPU. Основными средствами в этом должны стать графики загрузки CPU (CPU Utilization).
Далее важнейшим инструментом разработчика являются эксперименты с DirectX конвейером (pipeline). Предполагается следующая тактика применения экспериментов:
Дальнейшая детальная оптимизация графического фрейма включает в себя перехват фрейма (Frame Capture) и анализ с использованием Intel GPA Frame Analyzer.
Основные факторы, влияющие на производительность:
Презентацию к лекции Вы можете скачать здесь.
Каждый, кто работал с эмулятором для разработки Android-приложений, знает, что даже на современных компьютерах эмулятор загружается и работает очень медленно. Intel Hardware Accelerated Execution Manager (Intel HAXM) – это решение данной проблемы, использующее аппаратные возможности виртуализации и позволяющее значительно ускорить работу эмулятора Android.
Intel HAXM работает в паре с эмулятором для х86 устройств. При этом, виртуальное устройство будет работать со скоростью, приближенной к скорости работы реального устройства, что поможет сократить время на запуск и отладку приложения.
Прежде, чем установить Intel HAXM, необходимо убедиться, что компьютер удовлетворяет системным требованиям:
Intel HAXM можно установить как вручную (скачав с сайта software.intel.com/ru-ru/android/), так и используя Android SDK Manager.
В процессе установки будет предложено определить объем выделяемой оперативной памяти. Можно оставить значение, предложенное по умолчанию. Если в процессе работы потребуется изменить это значение, нужно просто запустить установку еще раз.
Также во время установки может возникнуть предупреждение о том, что виртуализация не включена. В этом случае нужно проверить настройки в BIOS, возможно, виртуализация поддерживается системой, но по умолчанию отключена.
Для того, чтобы проверить, что все установлено верно и работает, необходимо в командной строке выполнить: sc query intelhaxm. После выполнения данной команды будет показан текущий статус службы (Рис. 3.1).
(рис 3.1) В командной строке показан статус службы Intel HAXM
Теперь необходимо создать новое виртуальное устройство с помощью AVD Manager. В окне свойств следует добавить обязательный параметр в раздел Hardware – GPU Emulation (Рис. 3.2).
(рис 3.2) Окно свойств при создании нового эмулятора
Осталось запустить и проверить, все ли настроено верно. Для этого нужно выбрать созданный эмулятор, запустить его и в настройках посмотреть название устройства. Если все было сделано правильно, то в поле Model number будет написано "Android SDK Build for x86" (Рис. 3.3).
(рис 3.3) Окно настроек созданного эмулятора
Теперь эмулятор начал работать быстрее, причем настолько, что можно прямо из него просматривать видео с Youtube в режиме реального времени, а не как раньше – в режиме слайд-шоу.
Программы, особенно для мобильных устройств, могут и должны быть энергоэффективными, однако разработчики зачастую не уделяют этому показателю должного внимания. Для мобильных устройств большое значение имеет экономный расход электроэнергии, благодаря которому продлевается срок работы от аккумулятора. Поэтому пользователю предпочтительно использовать более энергоэффективные приложения. Зачастую разработчики приложений создают свои программы на настольных ПК, где показатели потребления электроэнергии намного менее существенны, чем производительность. Тем не менее, если не обращать внимания на вопросы потребления энергии, запуск программы на мобильном устройстве может обернуться для пользователя неприятной неожиданностью. Intel Energy Checker SDK измеряет количество работы, производимой системой, и соответствующее потребление энергии и позволяет тем самым определить, насколько эффективна система в части энергопотребления, и помочь в оптимизации приложения.
Уровень потребления, безусловно, является важным показателем энергоэффективности, но сам по себе он не дает полного представления о работе приложения. Малопотребляющие системы, выполняющие при этом малый объем полезной работы, могут быть менее эффективными, чем более мощные системы, способные осуществлять более значительные вычисления. Более того, даже в рамках одной системы не существует единой метрики – в зависимости от приложения ключевые показатели могут разниться. Intel Energy Checker SDK является гибким инструментом, позволяющим разработчикам проводить измерения и контроль энергоэффективности системы.
В Intel Energy Checker SDK широко используется понятие "энергоэффективность". Повсеместно принятого определения энергоэффективности не существует, но в Intel Energy Checker SDK используется следующее:
Энергоэффективность = Работа / Энергия
Под термином "работа" понимается объем полезной работы, выполненной приложением. Простого, четкого и однозначного определения термина "полезная работа" также не существует; то, что считается полезной работой в одной программе, может не считаться таковой в другом приложении. Например, количество полезной работы, проделываемое платежным приложением, отличается от количества полезной работы, выполняемой приложением-видеосервером, программой доступа к базе данных или почтовым сервером.
Intel Energy Checker SDK API предоставляет доступ к показателям проделанной приложением полезной работы с помощью простой программной оснастки. Решение остается за разработчиком. Например, можно считать работу определенных компонентов программного видеопроигрывателя, выполняющих какую-либо работу для пользователя (например, декодирование видео), полезной работой, а действия других компонентов (получающих доступ к ресурсам, ожидающих ввода, выполняющих синхронизацию) не будут считаться полезными. Intel Energy Checker SDK позволяет разработчикам определять, какие замеры "полезной работы" важны для конкретного приложения, и предоставляет доступ к ним с помощью простого API.
Intel Energy Checker SDK API предоставляет функции экспорта и импорта счетчиков в приложения. Счетчики хранят информацию о количестве событий или процессов, другие приложения могут считывать показания этих счетчиков и осуществлять действия на основе их текущих значений. Ядро Intel Energy Checker API состоит из пяти функций, которые позволяют открывать, повторно открывать, читать, записывать и закрывать счетчики.
Первым этапом использования Intel Energy Checker SDK для определения энергоэффективности приложения является создание и применение счетчиков, определяющих объем полезной работы в программе. Счетчик – это 8-байтовая переменная, в которой хранится количество возникновений определенного события. В языке программирования C для этого используется тип данных unsigned long. Разработчик может создать один или несколько счетчиков в ходе инициализации программного обеспечения. После этого можно создать контейнер для счетчиков, называемый "Productivity Link" (PL). Каждый PL может содержать до 512 счетчиков, одновременно может быть открыто до 10 разных PL, но для большинства программ будет достаточно гораздо меньшего числа счетчиков и PL.
Вторым этапом расчета энергоэффективности приложения является измерение объема энергии, израсходованной при работе программы. Для этого в Intel Energy Checker SDK применяются два средства, входящие в пакет SDK: Energy Server (ESRV) и Temperature Server (TSRV). ESRV используется для отслеживания потребления электроэнергии по данным внешних измерительных устройств, а TSRV отслеживает показатели температуры по данным термодатчиков.
В состав Intel Energy Checker SDK, помимо уже упомянутых средств, входят еще две вспомогательные программы:
(рис 3.4) PL GUI Monitor
После оснастки кода программы необходимыми счетчиками разработчик может собирать информацию о том, как приложение расходует электроэнергию, и применять необходимые меры для оптимизации. Разработчики приложений для мобильных устройств могут работать над оптимизацией потребления электроэнергии в различных областях:
Хотя изначально Intel Energy Checker SDK создавался для работы в дата-центрах, его можно использовать на клиентских или мобильных платформах. Он может работать в операционных системах Windows, Linux, Solaris и MacOS.
Несмотря на то, что изначально Intel Energy Checker SDK был призван облегчить анализ энергоэффективности и оптимизацию приложений, его можно использовать для доступа ко всем счетчикам, необходимым разработчикам или пользователям. Например, разработчики по своему усмотрению могут использовать механизм счетчиков для наблюдения за метриками качества обслуживания или счетчиками производительности.
Инструмент Intel Power Monitoring Tool отслеживает данные о производительности и энергопотреблении на Android-устройствах и помогает упростить следующие задачи для разработчиков и проектировщиков Android:
При создании энергоэффективных систем или приложений разработчики программного обеспечения должны собирать статистические данные для выявления и диагностики проблем с энергопотреблением и производительностью. К несчастью, на изучение ключевых данных об энергопотреблении среди огромных массивов имеющихся данных тратится слишком много времени. Инструмент Intel Power Monitoring Tool позволяет собирать необходимые данные об энергопотреблении через определенные интервалы времени. При этом состояния энергопотребления системы и приложений записываются в файл журнала. Затем разработчик программного обеспечения может использовать данные из журнала для выявления и диагностики проблем с энергопотреблением и производительностью.
Для операционной системы Android характерно то, что большинство приложений работают в полноэкранном режиме, чтобы обеспечить более удобное взаимодействие пользователя с устройствами. Из-за этого разработчикам программного обеспечения труднее отслеживать статистические данные системы и приложений в режиме реального времени. Intel Power Monitoring Tool помогает преодолеть эти трудности, обеспечивая в режиме реального времени мониторинг ключевых данных об энергопотреблении из системы и приложений.
Intel Power Monitoring Tool собирает минимальный набор данных об энергопотреблении в фоновом режиме, не вмешиваясь в работу системы. Дополнительная загрузка процессора при использовании инструмента Intel Power Monitoring Tool достаточно мала (не более 3%).
Intel Power Monitoring Tool предоставляет опытным и начинающим Android-разработчикам три основные возможности:
Следующие компоненты мобильных устройств потребляют большую часть энергии и сильнее всего влияют на продолжительность работы устройства от аккумулятора:
Поведение операционной системы и приложений также оказывает большое влияние на общее энергопотребление устройства и время работы от аккумулятора. С помощью инструмента Intel Power Monitoring Tool разработчики могут оценить характеристики энергопотребления устройства в режиме ожидания (когда выполняются только операционная система и службы) и отследить влияние определенного приложения на общее энергопотребление устройства.
Помимо данных об энергопотреблении на уровне компонентов Intel Power Monitoring Tool собирает данные об энергопотреблении для выполняемого приложения
Intel Power Monitoring Tool позволяет отслеживать работу системы и приложения в режиме реального времени через настраиваемые интервалы выборки. Во время работы системы Android или приложения этот инструмент отображает небольшое окно (Рис. 3.5) в правой части строки состояния, где показаны ключевые данные об энергопотреблении. Данные в окне обновляются практически в режиме реального времени и представлены в следующем формате:
(рис 3.5) Мониторинг системы и приложения в режиме реального времени Во время выполнения системы Android и приложений Power Monitoring Tool запускает в фоновом режиме службу профилирования, которая очень незначительно влияет на использование ресурсов.
Служба профилирования запускается и останавливается нажатием на значок приложения Intel Power Monitoring Tool. Когда пользователь останавливает службу профилирования энергопотребления, во внутренней памяти или на внешнем запоминающем устройстве создается файл журнала с именем "powermonitor.log". В этом файле содержатся все данные об энергопотреблении, которые были получены в течение интервала выборки между запуском и остановкой службы профилирования.
Частота выборки может настраиваться пользователем. В следующей таблице показано, какой объем дополнительных ресурсов использует инструмент при разных частотах выборки:
| Sampling Rate | CPU Utilization overhead |
|---|---|
| 1 seconds | 2,83% |
| 2 seconds | 1,07% |
| 3 seconds | 0,06% |
| 5 seconds | 0,05% |
| 10 seconds | 0,02% |
Согласно этой таблице при интервале выборки, равном 1 секунде, дополнительная нагрузка составляет не более 3 %.
Также можно включить функцию электронной почты, чтобы после остановки службы профилирования файл "powermonitor.log" отправлялся на указанный почтовый адрес. Это упрощает сбор и извлечение данных с устройства на компьютер.
Инструмент Intel Power Monitoring Tool позволяет опытным разработчикам программного обеспечения и обычным пользователям отслеживать, выявлять и диагностировать проблемы с энергопотреблением и производительностью на уровне системы. Благодаря функции мониторинга в режиме реального времени разработчики получают простую и понятную информацию, помогающую найти проблему. Функция записи в журнал позволяет отслеживать данные за определенные периоды для более глубокого анализа. Разработчики программного обеспечения экономят свое время, поскольку собирается минимальный набор данных об энергопотреблении и не нужно просматривать большие массивы данных, чтобы найти ключевую информацию об энергопотреблении и производительности. При этом дополнительная нагрузка, связанная с профилированием данных, очень мала.
Приложение было выпущено через портал Google Market в середине января 2012 года и поддерживает следующие версии Android: GingerBread, HoneyComb, IceCreamSandwich.
Установить приложение можно с помощью портала Android Market или с помощью команды adb_install -r com.intel.PowerMonitoringTool.apk
После установки будут доступны три основные возможности Intel Power Monitoring Tool.
(рис 3.6) Запуск функции профилирования
(рис 3.7) Мониторинг в режиме реального времени
(рис 3.8) Мониторинг приложенияРазработчики графических приложений хорошо знают, как важны в их работе удобные средства по анализу построения кадра и производительности рендеринга (отрисовки кадра). Современные графические приложения очень сложны, и со временем эта сложность только увеличивается. Для того, чтобы программисты оптимально использовали возможности устройств, им нужны утилиты, помогающие обнаруживать ошибки и узкие места в их приложениях, ограничивающие производительность.
GPU (Graphics Processing Unit – графический процессор) и CPU (Central Processing Unit – центральный процессор) в пределах каждого кадра выполняют множество различных операций графического конвейера, и общая производительность зависит от наиболее медленного участка. Именно поэтому удобные средства отладки так важны, ведь разобраться в сотнях вызовов функций, происходящих за несколько миллисекунд, без соответствующих инструментов очень сложно.
Intel Graphics Performance Analyzers (GPA) состоит из набора программных средств, предназначенных для мониторинга производительности и отладки графических программ и компьютерных игр. Данная версия состоит из программы мониторинга реального времени – Intel System Analyzer, и программы анализа и отладки перехваченных графических фреймов – Intel Frame Analyzer. Важно, что данные программы не требует перекомпиляции или какого-либо предварительного инструментирования графического приложения, все необходимые вмешательства делаются в момент запуска. Инструмент Intel Platform Analyzer визуализирует профиль выполнения CPU- и GPU-задач, но в отличие от System Analyzer и Frame Analyzer он может потребовать изменения исходного кода приложения.
Все компоненты Intel GPA построены на основе сетевой удаленной отладки. Это означает, что на целевой машине, где планируется запускать приложение, также должно присутствовать специальное приложение-агент (Intel GPA Server). Клиентские приложения Intel System Analyzer и Intel Frame Analyzer запускаются на удаленной машине и связываются с сервером по сетевому протоколу TCP/IP. Главными преимуществами удаленной отладки являются:
Текущая версия продукта (2012 R4) разработана для устройств на базе процессора Intel и поддерживает различные операционные системы. В следующей таблице представлены поддерживаемые платформы:
| Клиентская ОС | Целевая ОС | Графический API приложения |
| Microsoft Windows 7/8 | Microsoft Windows 7/8 | Microsoft DirectX (версия не ниже 9) |
| Microsoft Windows 7/8 | Google Android | OpenGL-ES |
| Ubuntu | Google Android | OpenGL-ES |
Рассмотрим подробнее каждую из утилит, входящих в пакет.
Intel GPA Monitor.
Работа по анализу и отладке приложения начинается с инструмента Intel GPA Monitor. С его помощью происходит запуск анализируемого приложения (Рис. 3.9) и осуществляются настройки Intel GPA System Analyzer HUD (Head-Up Display).
Intel GPA System Analyzer.
Intel GPA System Analyzer предназначен для мониторинга в реальном времени различных параметров приложения. Данный инструмент предоставляет разработчику возможность следить за FPS (Frame Per Second – кадровая частота) приложения и визуально сопоставлять падение FPS c показаниями графиков, отражающих различные параметры DirectX, CPU или GPU. Поддерживаются три уровня детализации графиков. Разработчик может оценить степень зависимости приложения от CPU или GPU, эффективность распараллеливания (баланс загрузки различных CPU ядер), посмотреть, что происходит в вызовах DirectX (Рис. 3.10).
(рис 3.9) Intel GPA Monitor
(рис 3.10) Intel GPA System Analyzer
В компьютерной графике важным понятием является "шейдер". Он представляет собой программу, определяющую параметры изображения и выполняющуюся на графическом процессоре. Шейдеры бывают трех типов:
Intel GPA System Analyzer позволяет проводить эксперименты на живом, работающем приложении. В качестве наиболее популярных и показательных экспериментов реального времени следует отметить:
(рис 3.11) Эксперимент реального времени Wireframe
(рис 3.12) Эксперимент реального времени Disable Alpha BlendingС помощью Intel GPA System Analyzer можно останавливать приложение. Используя остановку, разработчик может "поймать" нужную сцену или эффект для последующего перехвата интересующего графического кадра. Intel GPA System Analyzer позволяет перехватить и записать текущий фрейм (Рис. 3.13) для последующего детального анализа в программе Intel GPA Frame Analyzer. Перехват предусматривает сохранение всех вызовов DirectX и всех используемых приложением графических ресурсов.
Intel GPA Frame Analyzer.
Intel GPA Frame Analyzer является важнейшим инструментом для детального изучения структуры перехваченного фрейма (работа производится с одним кадром). В основе представления информации о фрейме лежит концепция DirectX команд, выполняющих работу на GPU. В Intel GPA такие команды названы термином Эрг (Erg). Большинство Эргов представляют собой функции рисования (Draw Calls) библиотеки DirectX. Intel GPA Frame Analyzer позволяет воспроизвести (проиграть) все Эрги с целью определения их длительности и их вклада в суммарное время фрейма (Frame Time).
(рис 3.13) Выбор перехваченного кадра для анализа в Intel GPA Frame Analyzer
В Visualization Panel отображается гистограмма, наглядно представляющая продолжительность Эргов (Рис. 3.14). Предусмотрена возможность изменять единицы измерения по осям X, Y. Проблемные этапы обработки сцены наиболее четко видны в виде X: GPU Duration Y: GPU Breakdown (по оси X откладывается время выполнения Эрга, по оси Y – детализированное время выполнения, то есть время выполнения пиксельных, вершинных и геометрических шейдеров).
(рис 3.14) Гистограмма продолжительности эргов
Intel GPA Frame Analyzer делает несколько попыток проиграть фрейм и показывает усредненную длительность Эргов и степень разброса (девиацию) измерений относительно среднего значения.
Разработчик может выделять индивидуальные элементы фрейма. Intel GPA Frame Analyzer при этом выполняет подсветку выбранных элементов в режимах закраски цветом (highlighted) или подсвеченной геометрии (highlighted wireframe). Таким образом, довольно легко определить, какие Эрги отвечают за тот или иной компонент финальной картины (Рис. 3.15). Для любого выбранного Эрга Intel GPA Frame Analyzer позволяет инспектировать текстуры и поверхности вывода с указанием частоты использования текстуры. Еще одним важным элементом предлагаемым пользователю, является доступ к вершинным и пиксельным шейдерам на уровне исходных кодов (на языке High Level Shader Language – HLSL) и ассемблера (Рис. 3.16).
Выбрав указанные Эрги, разработчик может провести над ними эксперименты. Например, можно переключить пиксельный шейдер на простой (Simple Pixel Shader), применить отсечение (1x1 Scissor Rect), выполнить замену текстур (2x2 Textures). Применяя эксперименты вместе или по отдельности, разработчик наблюдает, как изменяется высота Эргов на гистограмме, и видит в панели Scene Overview старое значение длительности выполнения Эрга (Old), новое значение (New), численную разницу (Delta) и дисперсию (Variance) (Рис. 3.17).
(рис 3.15) Подсветка выбранного эрга в режиме Highlighted
(рис 3.16) Исходный код выбранного эрга на языке HLSL
Набор отладочных средств Intel GPA Frame Analyzer включает просмотр метрик для всего фрейма в целом (Frame Overview), просмотр состояний DirectX (States), просмотр шейдеров и шейдерных констант (Shaders), просмотр текстур (Texture), лог вызовов DirectX (API Log) и другие.
Intel GPA Platform Analyzer.
GPA Platform Analyzer позволяет визуализировать профили выполнения различных задач и подзадач исследуемого приложения на платформе в целом (то есть и на CPU, и на GPU). Поскольку использование многоядерных процессоров в персональных компьютерах стало повсеместным, для достижения наилучшей производительности необходимо эффективно использовать все доступные вычислительные ресурсы и оптимизировать нагрузку между всеми ядрами CPU и видеокартой.
(рис 3.17) Изменение длительности Эргов
GPA Platform Analyzer позволяет:
Оптимизация приложения.
Предполагается, что оптимизация приложения должна начинаться с рассмотрения общей производительности приложения при помощи Intel GPA System Analyzer. Первичный анализ сцены с низким FPS должен выявить, чем ограничена производительность приложения – CPU или GPU. Основными средствами в этом должны стать графики загрузки CPU (CPU Utilization).
Далее важнейшим инструментом разработчика являются эксперименты с DirectX конвейером (pipeline). Предполагается следующая тактика применения экспериментов:
Дальнейшая детальная оптимизация графического фрейма включает в себя перехват фрейма (Frame Capture) и анализ с использованием Intel GPA Frame Analyzer.
Основные факторы, влияющие на производительность:
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.