Re: [PATCH 1/2] perf: Add persistent events

From: Arnaldo Carvalho de Melo
Date: Mon Jun 14 2010 - 21:02:36 EST


Em Mon, Jun 14, 2010 at 11:24:26PM +0200, Borislav Petkov escreveu:
> From: Arnaldo Carvalho de Melo <acme@xxxxxxxxxxxxx>
> > One thing I thought was that perhaps reusing Kbuild would be a good
> > idea, something like:
> >
> > cd tools/
> > make menuconfig
> >
> > And use all the Kbuild machinery to select needed features, etc.
> >
> > What do you think?
>
> Why not, however, do we need it at this point? I mean, you simply do
>
> make -j; make install
>
> in tools/perf/ and all is good. It even tells you if some libraries are
> missing. I simply don't see such a large amount of options to justify
> a configurator but maybe there are usecases where Kconfig would make
> sense, hmmm?

Yeah, I mean longer term, as we get libraries separated, more benchmarks,
tools, etc.

> > It can be a follow up to what you're doing, that is needed anyway, some
> > questions below:

> > > tools/lib/util/util.h | 282 ++++++++++++++++++++
> >
> > Will we continue using "util" here? What other name could we pick? Nah,
> > probably for the ones you moved we can continue using it, the symbols
> > part I plan to move to tools/lib/symbol/.

> Yeah, names are kinda arbitrary. Keeping "util" meant as little changes as
> possible but it would make more sense to simply have all different library
> modules under "tools/lib/<module>.(c|h)" Will do so in the next version.

Ok

> > > tools/perf/builtin-bench.c | 2 +-
> > > tools/perf/builtin.h | 4 +-
> >
> > > -#include "types.h"
> > > +#include <util/types.h>
> >
> > I thought about suggesting using -I to reduce patch size, but then it is
> > using "" :-\
>
> Yeah, I have the -I$(CURDIR)/lib for this in the top level Makefile so all
> library includes would be like:
>
> #include <util.h>
>
> however, this does not differentiate perflib (let's call it that for how
> :) from libc headers. Do we want a "perf" or "kernel" or "perflib" or
> whatever prefix here - it might make sense later when this thing grows
> to differentiate between the namespaces...?

Agreed, but the last name this thing will have will be 'perf'something :-)

One of the goals at least I have with pursuing this path is to separate
out everything that is not strictly 'perf' into things that can be reused
by other tools, like yours.

> > So I'll do some testing here and merge this for .36 unless somebody has
> > other issues with this, Ingo? Frédéric?

> Can you please wait a bit with the merging, I'd like to write the
> whole rasd daemon stuff before we merge that and have the generic lib
> carve-out in one patchset?

Ok with me, I'll see if I manage to do the symbols part tho, as it is
kinda self contained and I already toyed with writing a test program
that uses the subset of tools/perf/util/ that deals with symbols.

Part of that experiment is in tools/perf/builtin-test.c, parts are
exemplified by this Makefile:

[acme@doppio linux-2.6-tip]$ cat tools/perf/util/examples/symbol/Makefile
ppio linux-2.6-tip]$ l tools/perf/util/examples/symbol/Makefile
-rw-rw-r-- 1 acme acme 693 2010-03-27 11:14 tools/perf/util/examples/symbol/Makefile
CFLAGS = -Wall -I../../include -I../.. -std=gnu99 -DNO_DEMANGLE -g
LDFLAGS = -lelf

ifeq ("$(origin O)", "command line")
OUTPUT := $(O)/
endif

LIBSYM_OBJS = $(OUTPUT)map.o $(OUTPUT)rbtree.o $(OUTPUT)symbol.o $(OUTPUT)strlist.o $(OUTPUT)eprintf.o

all: $(OUTPUT)dsym $(OUTPUT)ksym

$(OUTPUT)dsym: $(OUTPUT)dsym.o $(LIBSYM_OBJS)
gcc -o $@ $(LDFLAGS) $@.o $(LIBSYM_OBJS)

$(OUTPUT)ksym: $(OUTPUT)ksym.o $(LIBSYM_OBJS)
gcc -o $@ $(LDFLAGS) $@.o $(LIBSYM_OBJS)

$(OUTPUT)rbtree.o: ../../../../../lib/rbtree.c
gcc -o $@ -c $(CFLAGS) $<

$(OUTPUT)%.o: ../../%.c
gcc -o $@ -c $(CFLAGS) $<

$(OUTPUT)%.o: %.c
gcc -o $@ -c $(CFLAGS) $<

clean:
rm -f $(LIBSYM_OBJS) $(OUTPUT)?sym.o $(OUTPUT)?sym
[acme@doppio linux-2.6-tip]$
[acme@doppio linux-2.6-tip]$ cd tools/perf/util/examples/symbol/
[acme@doppio symbol]$ l build/
total 104
drwxrwxr-x 2 acme acme 4096 2010-06-14 21:55 ./
drwxrwxr-x 3 acme acme 4096 2010-03-28 13:52 ../
-rwxrwxr-x 1 acme acme 47040 2010-06-14 21:55 dsym*
-rwxrwxr-x 1 acme acme 47200 2010-06-14 21:55 ksym*
[acme@doppio symbol]$ ldd build/dsym
linux-vdso.so.1 => (0x00007fffe6cf2000)
libelf.so.1 => /usr/lib64/libelf.so.1 (0x0000003404c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003715a00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003715600000)
[acme@doppio symbol]$
[acme@doppio symbol]$ build/dsym
usage: dso DSO_NAME SYMBOL_NAME|0xADDR
[acme@doppio symbol]$ build/dsym /lib/libc-2.10.2.so malloc
malloc: 0x749c0-0x74bee
[acme@doppio symbol]$ build/dsym /lib/libc-2.10.2.so 0x749ee
__GI___libc_malloc: 0x749c0-0x74bee
[acme@doppio symbol]$ build/dsym /lib/libc-2.10.2.so __GI___libc_malloc
__GI___libc_malloc: 0x749c0-0x74bee

:-)

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/