From: Ingo Molnar <mingo@elte.hu>
To: Lin Ming <ming.m.lin@intel.com>
Cc: greg@kroah.com, Peter Zijlstra <peterz@infradead.org>,
Corey Ashford <cjashfor@linux.vnet.ibm.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
"eranian@gmail.com" <eranian@gmail.com>,
"Gary.Mohr@Bull.com" <Gary.Mohr@bull.com>,
"arjan@linux.intel.com" <arjan@linux.intel.com>,
"Zhang, Yanmin" <yanmin_zhang@linux.intel.com>,
Paul Mackerras <paulus@samba.org>,
"David S. Miller" <davem@davemloft.net>,
Russell King <rmk+kernel@arm.linux.org.uk>,
Paul Mundt <lethal@linux-sh.org>,
lkml <linux-kernel@vger.kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Will Deacon <will.deacon@arm.com>,
Maynard Johnson <mpjohn@us.ibm.com>, Carl Love <carll@us.ibm.com>
Subject: Re: [RFC][PATCH 3/9] perf: export registerred pmus via sysfs
Date: Thu, 13 May 2010 10:38:18 +0200 [thread overview]
Message-ID: <20100513083818.GA21924@elte.hu> (raw)
In-Reply-To: <1273739333.30322.119.camel@minggr.sh.intel.com>
* Lin Ming <ming.m.lin@intel.com> wrote:
> On Tue, 2010-05-11 at 17:18 +0800, Ingo Molnar wrote:
> > * Peter Zijlstra <peterz@infradead.org> wrote:
> >
> > > The new PMUs will use a dynamic range that starts at PERF_TYPE_MAX.
> >
> > I dont think we should use a dynamic range of event sources - it's a
> > completely useless indirection that has no meaning to humans.
> >
> > As far as machine interfaces go a much cleaner approach would be to allow an
> > open fd to a sysfs file to be passed to sys_perf_event_open() - this would
> > identify the event source. This needs a small extension of the ABI but we
> > could thus get rid of the 'type' enumeration altogether and express _all_
> > event sources via fds to sysfs files.
>
> I still don't understand this sys_fd -> pmu lookup, would you please
> explain it more detail?
>
> struct pmu {
> kobject kobj;
> ...
> };
>
> What I can imagine is,
>
> 1. In userspace, sys_fd =
> open("/sys/devices/system/cpu/event_source", ..), then sys_fd is passed
> to sys_perf_event_open()
Yes, open() an event_source - or rather an event itself. For raw events there
has to be a separate event entry that can be opened.
I.e. we'd have a layout like:
/sys/devices/system/cpu/events/cycles/id
/sys/devices/system/cpu/events/instructions/id
/sys/devices/system/cpu/events/raw/id
By making each event category a directory we gain the flexibility of
integrating tracepoints as well, for example:
/sys/kernel/sched/events/wakeup/id
/sys/kernel/sched/events/wakeup/format
Where 'format' describes the event record layout:
# cat /debug/tracing/events/sched/sched_wakeup/format
name: sched_wakeup
ID: 59
format:
field:unsigned short common_type; offset:0; size:2; signed:0;
field:unsigned char common_flags; offset:2; size:1; signed:0;
field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
field:int common_pid; offset:4; size:4; signed:1;
field:int common_lock_depth; offset:8; size:4; signed:1;
field:char comm[TASK_COMM_LEN]; offset:12; size:16; signed:1;
field:pid_t pid; offset:28; size:4; signed:1;
field:int prio; offset:32; size:4; signed:1;
field:int success; offset:36; size:4; signed:1;
field:int target_cpu; offset:40; size:4; signed:1;
print fmt: "comm=%s pid=%d prio=%d success=%d target_cpu=%03d", REC->comm, REC->pid, REC->prio, REC->success, REC->target_cpu
> 2. In kernel, sys_file = <find the sys file structure with sys_fd>
>
> 3. kobject = <retrieve the kobject from sys_file>
>
> 4. pmu = container_of(kobject, struct pmu, kobj)
>
> If my understanding is correct, then step 3 above seems strange. It's
> not the typical usage of sys file.
I dont think it's stange - we demux from the generic sysfs object to the more
specific perf events related object. This is similar how driver specific sysfs
functionality does the demux as well.
Ingo
next prev parent reply other threads:[~2010-05-13 8:39 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-10 9:27 [RFC][PATCH 3/9] perf: export registerred pmus via sysfs Lin Ming
2010-05-10 9:40 ` Peter Zijlstra
2010-05-10 10:11 ` Lin Ming
2010-05-10 10:18 ` Peter Zijlstra
2010-05-10 10:26 ` Lin Ming
2010-05-10 10:35 ` Paul Mundt
2010-05-10 10:58 ` Lin Ming
2010-05-10 11:04 ` Peter Zijlstra
2010-05-10 11:11 ` Lin Ming
2010-05-10 11:18 ` Lin Ming
2010-05-10 11:27 ` Peter Zijlstra
2010-05-10 11:36 ` Peter Zijlstra
2010-05-10 11:48 ` Ingo Molnar
2010-05-10 11:39 ` Russell King
2010-05-10 11:42 ` Peter Zijlstra
2010-05-10 20:25 ` Will Deacon
2010-05-11 6:34 ` Peter Zijlstra
2010-05-10 11:43 ` Ingo Molnar
2010-05-10 11:49 ` Peter Zijlstra
2010-05-10 11:53 ` Ingo Molnar
2010-05-10 23:13 ` Corey Ashford
2010-05-11 6:46 ` Peter Zijlstra
2010-05-11 7:21 ` Ingo Molnar
2010-05-11 8:20 ` Lin Ming
2010-05-11 8:50 ` Peter Zijlstra
2010-05-11 9:03 ` Lin Ming
2010-05-11 9:05 ` Lin Ming
2010-05-11 9:12 ` Peter Zijlstra
2010-05-11 9:18 ` Ingo Molnar
2010-05-11 9:24 ` Peter Zijlstra
2010-05-11 9:31 ` Ingo Molnar
2010-05-11 10:28 ` Lin Ming
2010-05-13 8:28 ` Lin Ming
2010-05-13 8:38 ` Ingo Molnar [this message]
2010-05-13 9:22 ` Lin Ming
2010-05-11 9:40 ` Lin Ming
2010-05-11 9:48 ` Peter Zijlstra
2010-05-11 9:53 ` Lin Ming
2010-05-11 15:17 ` Greg KH
2010-05-12 5:51 ` Paul Mundt
2010-05-12 8:37 ` Peter Zijlstra
2010-05-14 7:04 ` Paul Mundt
2010-05-11 10:09 ` stephane eranian
2010-05-11 14:15 ` Borislav Petkov
2010-05-11 14:25 ` Peter Zijlstra
2010-05-11 15:37 ` Borislav Petkov
2010-05-11 15:46 ` Peter Zijlstra
2010-05-10 23:54 ` Corey Ashford
2010-05-11 6:50 ` Peter Zijlstra
2010-05-11 2:43 ` Lin Ming
2010-05-11 6:35 ` Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100513083818.GA21924@elte.hu \
--to=mingo@elte.hu \
--cc=Gary.Mohr@bull.com \
--cc=acme@redhat.com \
--cc=arjan@linux.intel.com \
--cc=carll@us.ibm.com \
--cc=cjashfor@linux.vnet.ibm.com \
--cc=davem@davemloft.net \
--cc=eranian@gmail.com \
--cc=fweisbec@gmail.com \
--cc=greg@kroah.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.m.lin@intel.com \
--cc=mpjohn@us.ibm.com \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=rmk+kernel@arm.linux.org.uk \
--cc=will.deacon@arm.com \
--cc=yanmin_zhang@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox