Hi @pavelg,
NSys uses hardware ARMv8 PMU events by default, if possible.
Looks like for some reason hardware PMU events are disabled in Device Tree of your BSP/JetPack.
Can you please try the following commands:
cat /proc/device-tree/arm-pmu/{name,compatible,status}
ll /sys/bus/event_source/devices/
For example, when PMU is enabled:
cat /proc/device-tree/arm-pmu/{name,compatible,status}
arm-pmu
arm,armv8-pmuv3
okay <--- `disabled` means that ARMv8 PMU is disabled in BSP image.
ll /sys/bus/event_source/devices/
...
lrwxrwxrwx 1 root root 0 Mar 15 15:04 armv8_pmuv3 -> ../../../devices/armv8_pmuv3/
...
List of hardware PMU events:
ll /sys/bus/event_source/devices/armv8_pmuv3/events/
-r--r--r-- 1 root root 4096 Mar 15 15:06 br_mis_pred
-r--r--r-- 1 root root 4096 Mar 15 15:06 br_mis_pred_retired
-r--r--r-- 1 root root 4096 Mar 15 15:06 br_pred
-r--r--r-- 1 root root 4096 Mar 15 15:06 br_retired
-r--r--r-- 1 root root 4096 Mar 15 15:06 bus_access
...
Also, if both hardware and software events are available, you can switch between them - there is SampleOnHardwareEvent
config.ini option, something like this:
NSYS_CONFIG_DIRECTIVES='SampleOnHardwareEvent=<false|true>' nsys profile <app>
or for older NSys:
NSYS_CONFIG_DIRECTIVES='SampleOnHardwareEvent=<false|true>' nsys profile --sampling-trigger=perf <app>
Report’s Diagnostic Summary
- you can see which events were used:
Software:
Event 'CPU Clock (sw)', with sampling period 2201600, used to trigger process-tree CPU IP sample collection.
Hardware:
Event 'CPU Cycles', with sampling period 2201600, used to trigger process-tree CPU IP sample collection.
Thanks,
Igor.