Messages in this thread | | | Subject | Re: [RFC] [PATCH] perf: Attaching an event to a specific PMU | From | Peter Zijlstra <> | Date | Wed, 06 Jul 2011 19:12:48 +0200 |
| |
On Wed, 2011-07-06 at 18:53 +0200, Robert Richter wrote: > On 05.07.11 05:12:52, Ingo Molnar wrote: > > > > * Peter Zijlstra <a.p.zijlstra@chello.nl> wrote: > > > > > > Overall, my approach improves the perf design. It adds a better > > > > and more intuitve access to perf from user space with clear and > > > > common methods and interfaces. Please let me know the concerns > > > > you have. > > > > > > Its redundant, this interface ship has sailed, its not going to > > > happen. > > > > Even if we had the choice, i don't see how a /dev based enumeration > > of PMUs is in any way better than a topologically attached set of > > PMUs in /sys. > > > > This kind of structure is nice in principle: > > > > # ls -l /dev/pmu/ > > total 0 > > crw-rw---- 1 root root 254, 5 Jul 8 2011 breakpoint > > crw-rw---- 1 root root 254, 4 Jul 8 2011 cpu > > crw-rw---- 1 root root 254, 6 Jul 8 2011 proto > > crw-rw---- 1 root root 254, 1 Jul 8 2011 software > > crw-rw---- 1 root root 254, 2 Jul 8 2011 tracepoint > > > > But it should be done in /sys/. > > I have to learn yet why /dev is bad and /sys is good...
Its not so much /dev is bad, as not quite suited for this.
> The system topology is always in /sys, also for device nodes. But we > can't get a device file descriptor from /sys. I doubt /sys is capable > to handle a device use count (need to be checked). We actually must > grab the pmu while attaching events to it. And, user space > implementation is must easier with /dev (see code in my previous > mail).
Well you must not per-se, from a user's perspective there isn't much of a difference between if the sys_perf_event_open() fails or if the initial file open fails, in both cases he's not getting an event.
perf stat -e IBS:fetches will always have a fail against rmmod, rmmod could complete before we try to open the file (assuming IBS is a module).
> > My patch also includes code that creates a device class. It is also > visible in /sys/class/pmu/*.
So not only are you providing a duplicate of existing interfaces, you're actually duplicating information inside sysfs as well.
| |