Thread: [perfmon2] updated perfmon v3.0 code
Status: Beta
Brought to you by:
seranian
From: stephane e. <er...@go...> - 2008-10-09 23:50:35
|
Hello, Following the discussion on LKML and on this list about the v3.0 API design, I have made some more changes to the existing v3.0 code base. The changes reflects more or less the latest points discussed and in particular the reduction (merge) of more syscalls. The implemented API is as follows: int pfm_creat(int flags, pfarg_sinfo_t *sif, [char *smpl_name, void *smpl_arg, size_t arg_sz]); int pfm_write(int fd, int flags, int type, void *v, size_t sz); int pfm_read(int fd, int flags, int type, void *v, size_t sz); int pfm_attach(int fd, int flags, int target); /* target = -1 means detach */ int pfm_set_state(int fd, int flags); /* start/stop/restart */ int pfm_create_sets(int fd, int flags, pfarg_set_desc_t *v, size_t sz); int pfm_getinfo_sets(int fd, int flags, pfarg_set_info_t *v, size_t sz); Notice that I have shortened all syscalls names. There was not much point in appending _session to all of them. Dropping _pmrs from the read and write call, leaves the door open to read and write other things besides registers. There are no more optional arguments to pfm_read and pfm_write. I have updated the GIT perfmon3 branch for all architectures. I have also updated the libpfm perfmon3 branch to match the changes. I have also verified that separating the core PMD fields from the extended fields gives a nice boost on read/write operations. About 6% on single register read/write, and about 20% on 5 PMD read/write on Core 2 Quad. Please test this for your architecture. Thanks. |
From: Corey J A. <cja...@us...> - 2008-10-10 00:08:06
|
"stephane eranian" <er...@go...> wrote on 10/09/2008 02:46:21 PM: > Hello, > > Following the discussion on LKML and on this list about the v3.0 API > design, I have > made some more changes to the existing v3.0 code base. The changes reflects > more or less the latest points discussed and in particular the > reduction (merge) > of more syscalls. > > The implemented API is as follows: > > int pfm_creat(int flags, pfarg_sinfo_t *sif, [char *smpl_name, > void *smpl_arg, size_t arg_sz]); Ken Thompson, the creator of Unix, was once asked what he'd do if he had it to do over again. He said, "I'd spell create with an 'e'." Here's your chance! > int pfm_write(int fd, int flags, int type, void *v, size_t sz); > int pfm_read(int fd, int flags, int type, void *v, size_t sz); > int pfm_attach(int fd, int flags, int target); /* target = -1 > means detach */ > int pfm_set_state(int fd, int flags); /* start/stop/restart */ > > int pfm_create_sets(int fd, int flags, pfarg_set_desc_t *v, size_t sz); > int pfm_getinfo_sets(int fd, int flags, pfarg_set_info_t *v, size_t sz); > > Notice that I have shortened all syscalls names. There was not much point > in appending _session to all of them. Dropping _pmrs from the read and > write call, leaves the door open to read and write other things > besides registers. > > There are no more optional arguments to pfm_read and pfm_write. > > I have updated the GIT perfmon3 branch for all architectures. > I have also updated the libpfm perfmon3 branch to match the changes. > > I have also verified that separating the core PMD fields from the extended > fields gives a nice boost on read/write operations. About 6% on > single register > read/write, and about 20% on 5 PMD read/write on Core 2 Quad. > > Please test this for your architecture. I'll try to get to this soon. Regards, - Corey Corey Ashford Software Engineer IBM Linux Technology Center, Linux Toolchain Beaverton, OR 503-578-3507 cja...@us... |
From: stephane e. <er...@go...> - 2008-10-10 08:07:01
|
Corey, On Fri, Oct 10, 2008 at 2:07 AM, Corey J Ashford <cja...@us...> wrote: > "stephane eranian" <er...@go...> wrote on 10/09/2008 02:46:21 > PM: > >> Hello, >> >> Following the discussion on LKML and on this list about the v3.0 API >> design, I have >> made some more changes to the existing v3.0 code base. The changes > reflects >> more or less the latest points discussed and in particular the >> reduction (merge) >> of more syscalls. >> >> The implemented API is as follows: >> >> int pfm_creat(int flags, pfarg_sinfo_t *sif, [char *smpl_name, >> void *smpl_arg, size_t arg_sz]); > > Ken Thompson, the creator of Unix, was once asked what he'd do if he had > it to do over again. He said, "I'd spell create with an 'e'." > The 'e' is actually present. I just forgot it in the Email! |