On Tue, Feb 4, 2025 at 5:58 PM Namhyung Kim <namhyung@xxxxxxxxxx> wrote: > > On Mon, Feb 03, 2025 at 04:41:11PM -0800, Ian Rogers wrote: > > On Mon, Feb 3, 2025 at 4:15 PM Namhyung Kim <namhyung@xxxxxxxxxx> wrote: > > [snip] > > > Yep, I agree it's confusing. So my opinion is to use legacy encoding > > > and no default wildcard. :) > > > > Making it so that all non-legacy, non-core PMU events require a PMU is > > a breaking change and a regression for all users, command line event > > name suggesting, any tool built off of perf, and so on. Breaking all > > perf users and requiring all perf metrics be rewritten is well.. > > something.. > > Well, I guess the majority of users don't use non-core PMU events. And > we used to have PMU prefix on those events for years so old users should > not be affected. Actually perf list shows them with PMU prefix so I > think new users are also expected to use the PMU name. > > $ perf list pmu > ... > cstate_pkg/c2-residency/ [Kernel PMU event] > ... > i915/actual-frequency/ [Kernel PMU event] > i915/bcs0-busy/ [Kernel PMU event] > ... > msr/tsc/ [Kernel PMU event] > ... > power/energy-cores/ [Kernel PMU event] > ... > uncore_clock/clockticks/ [Kernel PMU event] > uncore_imc_free_running/data_read/ [Kernel PMU event] > ... > > The exception is the JSON events like below. > > uncore interconnect: > unc_arb_coh_trk_requests.all > [UNC_ARB_COH_TRK_REQUESTS.ALL. Unit: uncore_arb] > > which I hoped to be 'uncore_arb/unc_arb_coh_trk_requests.all/' or even > 'uncore_arb/coh_trk_requests.all/'. But it would be hard to change the > all metric expressions now. Also users can directly use them as they > are listed by `perf list`. So we need to support that without PMUs. So there's nothing wrong with your proposal except it breaks non-core events. We can't agree to flip the default on a flag for perf top: https://lore.kernel.org/lkml/20240516222159.3710131-1-irogers@xxxxxxxxxx/ to make perf top behave as, you know, top does as it could be an option people depend on. A behavior that matters if you do user filtering as exited processes stay in perf top (both confusing and un-top like). Fwiw, that reminds me of another patch series being unreviewed: https://lore.kernel.org/lkml/20250111190143.1029906-1-irogers@xxxxxxxxxx/ Anyway, the perf top flag is one that no-one knows exists on a command most people don't know exists - Julia Evans' zine of course loves it and we love Julia's work and the zine. So, it would seem to me that changing something as fundamental as how all non-core events behave would be seen as a regression. Imagine the person going to perfmon-events.intel.com, finding an event name and expecting to be able to use it with perf. Now they need to grub around in perf list to locate the PMU. What is appropriate for them to know about how suffixes work and show in perf list..? Well that's assuming suffixes work in the future as ARM will probably launch an a1000 CPU and the PMU will look like a hex suffix and the whole naming convention implodes. Even with this what would be the behavior of core events? You want legacy events to have priority over sysfs/json when there is no PMU. You know, and have stated not caring, RISC-V wants different and that it breaks Apple-M's PMUs for a fairly large range of kernel releases including 1 LTS kernel - the only reason I'm writing patches in this area in the 1st place. Software is soft and you can go fix software anywhere in the stack. Listening to vendors and not breaking everyone is the point-of-view these patches have been coming from. I find it very hard to have a conversation where this is just forgotten about and we're working on hypotheticals which seem to be both unwanted and implausible. I don't know why people (yourself, Linus) keep wanting to show me the perf list output. It is arbitrary. I rewrote it and changed the behavior of all uncore PMUs within it (we didn't used to deduplicate based on the PMU suffix). It is nice that people think it reads like some religious text. Why is the formatting different in perf list for json specified events? Well it is because json events have descriptions and the events you are showing with a PMU don't have a description. I think because there is no description, an effort was made to keep the output compact and put the PMU and event name together. It wasn't trying to enter some kind of long lasting marriage that the event name should only ever be used with the PMU. What happens if an event is both in sysfs and json? Well the sysfs event will get the description from the json and then I believe it won't behave as you show. Did the event get broken, as perf list no longer shows it with a PMU, by having a json description written? I think not and I think having descriptions with events is a good thing. Thanks, Ian