Статья разработчика Intel(R) System Studio: настройка, сборка, отладка и оптимизация основных программных компонентов Android *
I. Подготовка и настройка среды разработки.
1. Аппаратная среда назначения.
В этой статье в качестве аппаратной платформы используется плата Minnowboard MAX. Плата Minnowboard оборудована процессором Intel® Atom™, предназначенным для реализации архитектуры Intel®на рынке компактных и недорогих встроенных систем для разработчиков и производителей. Это решение обладает исключительной производительностью, гибкостью и открытостью, при этом оно соответствует всем применимым стандартам.
ЦП | 64-разрядный процессор Intel® Atom™ E3815 (1,46 ГГц, одно ядро) или E3825 (1,33 Гц, два ядра) |
Графика | Встроенный графический адаптер Intel® HD Graphics |
Память | 1~2 ГБ ОЗУ DDR3 |
Разъемы ввода-вывода | Видео: microHDMI/MicroSD/SATA2/USB 3.0 (хост)/ USB 2.0 (хост)/последовательный порт/Ethernet |
ОС | Linux/Yocto Linux/Windows 8.1/Android 4.4 |
* Более подробные сведения см. на официальной странице Minnowboard: http://www.minnowboard.org/.
2. Программная среда.
ОС хоста: Ubuntu 14.04 LTS/64-разрядная версия Windows 7.
Интегрированная среда разработки: Android Developer Tools/eclipse KEPLER.
Инструменты: Intel® System Studio 2015.
Целевая ОС: Android 4.2.2.
3. Настройка программной среды разработки Android.
- Настройте рабочую станцию (Ubuntu Linux).
sudo dpkg --assert-multi-arch sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java6-installer sudo apt-get install git git-core gnupg flex bison gperf build-essential ccache squashfs-tools zip curl libc6-dev libncurses5-dev x11proto-core-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils zlib1g-dev:i386 libx11-dev libreadline6-dev xsltproc echo 'export USE_CCACHE=1'>> ~/.bashrc ccache -M 16 mkdir ~ / bin PATH=~/bin:$PATH curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
- Загрузите код.
repo init -u https://github.com/android-ia/platform_manifest.git repo sync -j4 -q -c --no-clone-bundle
- Выполните сборку.
source build/envsetup.sh lunch<select minnow-eng> make -j4
- Создайте установочный USB-накопитель и вставьте его в разъем на плате Minnowboard.
Скопируйте файл android-ia/out/target/product/minnowboard_max/live.img и создайте образ установщика на USB-накопителе. В Windows можно создать установочный образ Android на USB-накопителе с помощью программы Win32diskimager. Затем вставьте USB-накопитель с образом установщика Android в разъем на плате Minnowboard. После загрузки выберите установку Android.
- Подключите Android на плате Minnowboard к главному компьютеру.
После успешной загрузки подключитесь к целевому устройству с помощью кабеля Ethernet. Настройте подключение.
adb connect 192.168.42.1 adb shell
2. С помощью VTune.
Инструмент VTune, предназначенный для анализа производительности, позволяет выделить области наименее эффективного использования ЦП в отдельных приложениях и во всей системе.
Приведенные ниже ссылки помогут обнаружить такие неэффективные области в Android.
- Использование Intel® VTune Amplifier 2014 for Systems для Android * на устройствах без рутового доступа
- Анализ производительности Java на устройствах Android с помощью Intel® VTune™ Amplifier 2014 for Systems
В этой статье описывается профилирование систем Android. Для профилирования системы (включая ядро Linux) с помощью общесистемной функции профилирования VTune некоторые функции, способные останавливать профилирование VTune, будут добавлены на уровень ядра Linux в Android, а также будет реализован настраиваемый пользовательский анализ в VTune. Также поясняется компиляция Android и обновление загрузочного образа с помощью fastboot, ведение журнала и некоторые команды ADB в Android, что необходимо для такого анализа.
1. Пример остановки профилирования VTune.
При работе на уровне ядра Linux в Android иногда требуется остановить профилирование в момент определенного события или сигнала либо при возникновении исключений (ошибок ядра). В этом случае можно приступить к анализу сразу же после нужной точки отладки. Для этого можно отправить сигнал QUIT в процесс VTune, который запускается одновременно с началом анализа из графического пользовательского интерфейса VTune или из командной строки. Ниже приведен пример функции для обнаружения процесса VTune и отправки сигнала QUIT, чтобы остановить профилирование.
void stop_vtune_process (void) { struct task_struct *p; int j; int flasg_to_skip_sh = 0; for_each_process(p) { for (j=0;j< (TASK_COMM_LEN-4);j++) { if (p->comm[j] == 'a'&& p->comm[j+1] == 'm'&& p->comm[j+2] == 'p' \&& p->comm[j+3] == 'l'&& p->comm[j+4] == 'x') { /* found the amplx ... in the process name. */ printk ("[vtune] %d %s \n",task_pid_nr(p),p->comm); if (flasg_to_skip_sh) { task_lock(p); printk("[vtune]Kill %d(%s)\n",task_pid_nr(p), p->comm); task_unlock(p); do_send_sig_info(SIGQUIT, SEND_SIG_PRIV, p, false); break; } else { printk("[vtune] skip sh for amplxe\n"); flasg_to_skip_sh++; } } } } }
Можно добавить в исходный код ядра Linux такие функции, как события ошибок ядра, события USB и прочие события, при которых необходимо остановить профилирование и начать анализ в VTune.
(2) Полезные ресурсы: fastboot, ADB, журнал ядра (плата Minnowboard MAX).
<build source codes> make -j4<download kernel image by fastboot> adb reboot bootloader fastboot -t 192.168.42.1 flash boot boot.img fastboot -t 192.168.42.1 continue<logging kernel via adb> adb shell cat /proc/kmsg | grep vtune
(3) Настройка и использование VTune для профилирования системы.
Для получения подробной системной информации при профилировании лучше использовать функцию Advanced hotspot с системным профилем: здесь немного информации о стеке вызовов, но зато представлены системные процессы и функции, вызываемые при профилировании.
- Свойства проекта — тип целевой системы: профилирование системы
- New Analysis — Choose analysis type — advanced hotspot, collection level: hotspot
<Снимок экрана с результатом — пример: подробный анализ узкого места>
Здесь используются три частых аппаратных события: CPU_CLK_UNHALTED.CORE/CPU_CLK_UNHALTED_REF_TSC/
INST_RETIRED_ANY. Если же код профилируемой системы в большей степени зависит от задержек или нужно использовать определенное аппаратное событие PMU, используйте настраиваемый анализ. В следующем примере — настраиваемый анализ.
- Project properties — Attach process — select process
- New Analysis — Custom Analysis — New Hardware Event-based sampling analysis
- New Hardware Event-based sampling analysis-Edit — добавьте нужные события
- New Hardware Event-based sampling analysis-Edit — Check the collect stacks или Analyze system-wide context switches
<Снимок экрана с результатом — пример: настраиваемый анализ>
Можно проводить анализ работы процесса за определенное время, как показано на рисунке выше. Если будет обнаружен подозрительный процесс, требующий более подробного рассмотрения, выберите Vtune — Project Properties — Target Type — Attach to Process и повторите показанное выше тестирование для сужения возможного круга неполадок.