Linux has a set of events you can query to look at performance of … well lots of things. Its a generic mechanism. Here’s a quick peek at the set of values I can see if I look at an AltraMax running Fedora 36.
$ ls /sys/bus/event_source/devices/ arm_cmn_0 arm_dsu_20 arm_dsu_34 arm_dsu_48 arm_dsu_61 arm_dsu_75 arm_cmn_1 arm_dsu_21 arm_dsu_35 arm_dsu_49 arm_dsu_62 arm_dsu_76 arm_dsu_0 arm_dsu_22 arm_dsu_36 arm_dsu_5 arm_dsu_63 arm_dsu_77 arm_dsu_1 arm_dsu_23 arm_dsu_37 arm_dsu_50 arm_dsu_64 arm_dsu_78 arm_dsu_10 arm_dsu_24 arm_dsu_38 arm_dsu_51 arm_dsu_65 arm_dsu_79 arm_dsu_11 arm_dsu_25 arm_dsu_39 arm_dsu_52 arm_dsu_66 arm_dsu_8 arm_dsu_12 arm_dsu_26 arm_dsu_4 arm_dsu_53 arm_dsu_67 arm_dsu_9 arm_dsu_13 arm_dsu_27 arm_dsu_40 arm_dsu_54 arm_dsu_68 armv8_pmuv3_0 arm_dsu_14 arm_dsu_28 arm_dsu_41 arm_dsu_55 arm_dsu_69 breakpoint arm_dsu_15 arm_dsu_29 arm_dsu_42 arm_dsu_56 arm_dsu_7 kprobe arm_dsu_16 arm_dsu_3 arm_dsu_43 arm_dsu_57 arm_dsu_70 software arm_dsu_17 arm_dsu_30 arm_dsu_44 arm_dsu_58 arm_dsu_71 tracepoint arm_dsu_18 arm_dsu_31 arm_dsu_45 arm_dsu_59 arm_dsu_72 uprobe arm_dsu_19 arm_dsu_32 arm_dsu_46 arm_dsu_6 arm_dsu_73 arm_dsu_2 arm_dsu_33 arm_dsu_47 arm_dsu_60 arm_dsu_74 |
Lets simplify that a bit:
$ ls /sys/bus/event_source/devices/ | cut -d_ -f2 | sort -u breakpoint cmn dsu kprobe pmuv3 software tracepoint uprobe |
These are, roughly speaking, the set of drivers we get to export events. arm_cmn_0 is an instance of an arm_cmn performance monitoring unit (PMU). There are two of these:
]$ ls /sys/bus/event_source/devices/ | grep cmn arm_cmn_0 arm_cmn_1 |
What kind of events does this product? Lots:
$ ls /sys/bus/event_source/devices/arm_cmn_0/events/ | wc -l 156 |
You can see the event id for each one:
$ cat /sys/bus/event_source/devices/arm_cmn_0/events/hnf_cache_fill type=0x5,eventid=0x3 |
The perf tool uses the metadata about the events to translate these. You can see how it formats the values by entries in the “format” subdirectory. For example:
$ cat /sys/bus/event_source/devices/arm_cmn_0/format/eventid config:16-23 $ cat /sys/bus/event_source/devices/arm_cmn_0/format/type config:0-15 |
There is obviously a lot more to this, but these notes are enough to get me started, so I want to get them posted.