У меня был perf
, работающий отлично на моем Chromebook Cortex-A15 с ARCH Linux ARM.«perf stat» возвращает <не поддерживается> для всех событий на ARCH Linux ARM
Я обновил pacman
, чтобы получить gcc-5.3, и попросил обновить мое ядро, поэтому я и сделал.
Теперь perf
возвращается:
[[email protected] Speckle]$ perf stat uname -a
Linux alarm 3.8.11-3-ARCH #1 SMP Wed Jan 20 13:44:59 MST 2016 armv7l GNU/Linux
Performance counter stats for 'uname -a':
<not supported> task-clock
<not supported> context-switches
<not supported> cpu-migrations
<not supported> page-faults
<not supported> cycles
<not supported> stalled-cycles-frontend
<not supported> stalled-cycles-backend
<not supported> instructions
<not supported> branches
<not supported> branch-misses
0.002148765 seconds time elapsed
Если я бегу perf list
, он говорит мне, что должны поддерживать эти события:
[[email protected] Speckle]$ perf list
List of pre-defined events (to be used in -e):
branch-instructions OR branches [Hardware event]
branch-misses [Hardware event]
bus-cycles [Hardware event]
cache-misses [Hardware event]
cache-references [Hardware event]
cpu-cycles OR cycles [Hardware event]
instructions [Hardware event]
ref-cycles [Hardware event]
И проверить мою конфигурацию ядра, кажется, что perf
все равно должны быть поддерживается.
[[email protected] Speckle]$ zgrep PERF /proc/config.gz
CONFIG_CGROUP_PERF=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y
CONFIG_PERF_EVENTS=y
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
# CONFIG_CLS_U32_PERF is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
Если я пытаюсь ocount/OProfile, кажется, работает:
[[email protected] ~]$ ocount --events INST_RETIRED uname -a
Linux alarm 3.8.11-3-ARCH #1 SMP Wed Jan 20 13:44:59 MST 2016 armv7l GNU/Linux
Events were actively counted for 1598252 nanoseconds.
Event counts (actual) for /usr/bin/uname:
Event Count % time counted
INST_RETIRED 609,518 100.00
Глядя на журнал pacman, это выглядит так, где произошло изменение ядра?
[2016-04-26 06:24] [ALPM] upgraded libtool (2.4.6-3 -> 2.4.6-4)
[2016-04-26 06:27] [ALPM] upgraded linux-firmware (20150904.6ebf5d5-1 -> 20160315.deb1d83-1)
[2016-04-26 06:27] [ALPM] upgraded linux-peach (3.8.11-2 -> 3.8.11-3)
[2016-04-26 06:27] [ALPM-SCRIPTLET] >>> Updating module dependencies. Please wait ...
[2016-04-26 06:27] [ALPM-SCRIPTLET] A new kernel version needs to be flashed onto /dev/sda1.
[2016-04-26 06:27] [ALPM-SCRIPTLET] Do you want to do this now? [y|N]
[2016-04-26 06:28] [ALPM-SCRIPTLET] 8752+0 records in
[2016-04-26 06:28] [ALPM-SCRIPTLET] 8752+0 records out
[2016-04-26 06:28] [ALPM-SCRIPTLET] 4481024 bytes (4.5 MB, 4.3 MiB) copied, 12.7236 s, 352 kB/s
Что я ввернуть и как я могу получить perf
обратно?
Можете ли вы напрямую использовать «сырые» события? Работает ли он над ['oprofile'] (http://oprofile.sourceforge.net/docs/armv7-ca15-events.php)? Какова ваша версия 'kernel' и' perf'? – Jakuje
Версия ядра - это «аварийная сигнализация Linux 3.8.11-3-ARCH». Проверяя 'pacman -Q', я установил' linux-api-headers 4.4.1-1', 'linux-firmware 20160315.deb1d83-1' и' perf 4.5-2'. Я не знаком с 'oprof',' oreport', но, похоже, он работал без ошибок. Сырые события, похоже, не подсчитываются, если я правильно верну их ('perf stat -e cycles, r08, r11 ls'). – Chris
Есть ли простая команда с использованием 'oprof', чтобы проверить, работает ли она? Если я делаю 'sudo operf ls', он говорит, что профилирование ядра невозможно с текущей конфигурацией системы. – Chris