Re: [PATCH] perf top: Use evsel's cpus to replace user_requested_cpus

Arnaldo Carvalho de Melo
2023-12-15T15:36:14Z

Em Tue, Dec 12, 2023 at 06:31:05PM +0000, Mark Rutland escreveu:
> On ARM it'll be essentially the same as on x86: if you open an event with
> type==PERF_EVENT_TYPE_HARDWARE (without the extended HW type pointing to a
> specific PMU), and with cpu==-1, it'll go to an arbitrary CPU PMU, whichever
> happens to be found by perf_init_event() when iterating over the 'pmus' list.

> If you open an event with type==PERF_EVENT_TYPE_HARDWARE and cpu!=-1, the event
> will opened on the appropriate CPU PMU, by virtue of being rejected by others
> when perf_init_event() iterates over the 'pmus' list.

The way that it is working non on my intel hybrid system, with Kan's
patch, is equivalent to using this on the RK3399pc board I have:

root@roc-rk3399-pc:~# perf top -e armv8_cortex_a72/cycles/P,armv8_cortex_a53/cycles/P

Wouldn't be better to make 'perf top' on ARM work the way is being done
in x86 now, i.e. default to opening the two events, one per PMU and
allow the user to switch back and forth using the TUI/stdio?

Kan, I also noticed that the name of the event is:

1K cpu_atom/cycles:P/ ◆
11K cpu_core/cycles:P/

If I try to use that on the command line:

root@number:~# perf top -e cpu_atom/cycles:P/
event syntax error: 'cpu_atom/cycles:P/'
\___ Bad event or PMU

Unable to find PMU or event on a PMU of 'cpu_atom'

Initial error:
event syntax error: 'cpu_atom/cycles:P/'
\___ unknown term 'cycles:P' for pmu 'cpu_atom'

valid terms: event,pc,edge,offcore_rsp,ldlat,inv,umask,cmask,config,config1,config2,config3,name,period,freq,branch_type,time,call-graph,stack-size,no-inherit,inherit,max-stack,nr,no-overwrite,overwrite,driver-config,percore,aux-output,aux-sample-size,metric-id,raw,legacy-cache,hardware
Run 'perf list' for a list of valid events

Usage: perf top [<options>]

-e, --event <event> event selector. use 'perf list' to list available events
root@number:~#

It should be:

"cpu_atom/cycles/P"

- Arnaldo