LINUX.ORG.RU

профилировщик для архитектуры ARM

 ,


0

1

Посоветуйте пожалуйста профилировщик для платформы ARM (PandaBoard OMAP4 Cortex-A9 ARMv7) - все те что на x86 я использовал и они у меня работали - такие как GProf, GPT (google performance tools), Valgrind/callgrind - все печально.

Для теста профилировщика запускаю одну и ту же программу чтобы сравнить сразу и на ARM и на x86.

Gprof дает явно неадекватные результаты - видно в сравнении с x86 результатом. Все функции якобы потребляют 100% проца.

Далее, GPT - собирал из SVN последнюю версию - даже на 64 битах x86 несмотря на предупреждение о проблемах, работает более менее нормально. Результат смотрю при помощи kcachegrind - красиво. А на ARM не регистрируется ни одной записи в статистику профилирования.

Valgrind вообще не полетел, хотя ставил из репозитория Ubuntu.

Моя плата - PandaBoard/OMAP4 + Ubuntu 11.10 armel.

Вопрос: а какой профилировщик (потребление CPU) имеет больше смысла пытаться заставить работать на ARM? Решил поинтересоваться, может кто использует.

Ответ на: комментарий от tailgunner

ты его на ARM пробовал? может ты еще поможешь мне с ним разобраться? я создавал топик на тему oprofile и в итоге оказалось что в тысячу раз проще просто взять Varlgrind и получить идеальный результат через 5 минут, а oprofile капризный горбатый инструмент, хотя разработчики ядра быть может будут вынуждены его освоить...

но моя проблема в том что Valgrind не заработал на ARM у меня, а на x86 с некоторыми библиотеками тоже не хочет дружить, но может в новой версии исправят, а ее не скоро ждать

так что... вопрос еще широко открыт - какой профилировщик для ARM брать

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

http://www.rotateright.com/ — вот попробуй. это допиленный немного oprofile, за который хотят денег. утверждают, что на arm работает.

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

ты его на ARM пробовал?

Нет. Но я налаживал его на PowerPC по армовым мануалам :)

но моя проблема в том что Valgrind не заработал на ARM у меня

Та же фигня, но для powerpc.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

о, где нарыть мануалы по oprofile для ARM? я не встречал каких то специфических... а вообще, интересно именно твои мануалы по которым у тебя заработало

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

вот за что я ненавижу oprofile - эта хрень найдет десятки а может сотни причин почему не работать, делал по туториалу, а вот результат:

opcontrol --start
Error: counter 0 not available nmi_watchdog using this resource ? Try:
opcontrol --deinit
echo 0 > /proc/sys/kernel/nmi_watchdog

впрочем я сделал как указано и оно запустилось, но чувствую меня ждет еще не мало чудесных ошибок и траблов с oprofile :)

другие профайлеры молча работают - всегда работают, но на ARM траблы

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

еще вопросик: какие результаты у тебя получались? вот Valgrind дает 100% точные результаты - вызвал функцию 231432 раза - столько оно и пишет, а google performance tools как-то приблизительно, и я смотрю что oprofile тоже так спонтанно работает:

int func1(int a, int b)
{
	return a + b;
}

int func2(int a, int b)
{
	return a + b;
}

int func3(int a, int b)
{
	return a + b;
}

int func0(int a)
{
	return func1(a, a + 3) + func2(a - 2, a + 1) + func3(a, a);
}
int count = 0;
for(int i = 0; i < 5E9; i++)
{
	func0(i);
	count++;
}

результат oprofile:

opreport -l ./test_gperftools
Overflow stats not available
warning: /no-vmlinux could not be found.
CPU: AMD64 family10, speed 800 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Cycles outside of halt state) with a unit mask of 0x00 (No unit mask) count 750000
samples  %        image name               symbol name
237304   36.2503  test_gperftools          func0(int)
170298   26.0145  test_gperftools          func2(int, int)
112478   17.1820  test_gperftools          func3(int, int)
74682    11.4083  test_gperftools          func1(int, int)
59517     9.0918  test_gperftools          main

а должно быть по идее func1 2 3 - почти равные доли, GPT по тому же принципу профилирует, но там если долго работает программа то доли и получаются равными

ЧЯДНТ? мне кажется это рандомные результаты профилирования...

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

вот Valgrind дает 100% точные результаты - вызвал функцию 231432 раза - столько оно и пишет

valgrind - эмулятор процессора, oprofile - общесистемный профилировщик; oprofile в обычном режиме - статистический профилировщик: раз в N мкс смотрит, где PC, и записывает.

должно быть по идее func1 2 3 - почти равные доли

Не знаю, должно ли. Но в любом случае, на мелких функциях любой статистический профилировщик работает плохо. Попробуй задрать частоту работы.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

у oprofile есть другие режимы работы? т.е. чтобы словно gperf оно вклинивалось и линковалось в мою программу - ведь она моя и в исходниках и доступна для таких вот зондов :)

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Чтобы в программу - нет, AFAIK (он же общесистемный - профилирует сразу кучу программ). А вообще режимов дофига, но они завязаны на аппаратные счетчики - ХЗ, как с этим на ARM.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.