mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
Sat Sep 24 00:01:42 2005 Soeren Sandmann <sandmann@redhat.com> * Nakefile.am, sysprof-text.c: New non-GUI version, written by Lorenzo Colitti, with some changes by me. * signal-handler.[ch]: New files that provide a way to get UNIX signals into a glib main loop. * README: add Lorenzo to credits
99 lines
2.7 KiB
Plaintext
99 lines
2.7 KiB
Plaintext
Sysprof is a sampling profiler that uses a kernel module to generate
|
||
stacktraces which are then interpreted by the userspace program
|
||
"sysprof".
|
||
|
||
See the Sysprof homepage:
|
||
|
||
http://www.daimi.au.dk/~sandmann/sysprof/
|
||
|
||
for more information
|
||
|
||
Please mail bug reports to
|
||
|
||
Soren Sandmann (sandmann@daimi.au.dk)
|
||
|
||
Also information about whether it works or doesn't work on your distribution
|
||
would be appreciated.
|
||
|
||
|
||
|
||
|
||
Requirements:
|
||
|
||
- A Linux kernel version 2.6.11 or newer is required.
|
||
Unlike Sysprof 0.9, this version should work fine on SMP systems.
|
||
|
||
- GTK+ 2.6.0 or newer is required
|
||
|
||
- libglade 2.5.1 is required
|
||
|
||
|
||
Compiling:
|
||
|
||
- Sysprof must be compiled with the same compiler that compiled the
|
||
kernel it is going to be used with. Usually this is just the the
|
||
system compiler, but if you have upgraded your kernel it is
|
||
possible that the new kernel was compiled with a different compiler
|
||
|
||
In that case, "modprobe sysprof-module" will produce this
|
||
error message:
|
||
|
||
insmod: error inserting './sysprof-module.o': -1 Invalid module format
|
||
|
||
|
||
|
||
Debugging symbols
|
||
|
||
- The programs you want to profile should have debugging symbols, or
|
||
you won't get much usable information. On a Fedora Core system,
|
||
installing the relevant -debuginfo package should be sufficient.
|
||
|
||
|
||
- X server.
|
||
|
||
The X server as shipped by most distributions uses its own home-rolled
|
||
module loading system and Sysprof has no way to deal with that, so if you
|
||
run sysprof with your normal X serverr you won't get any information about
|
||
how time is spent inside the X server.
|
||
|
||
To fix this you have to compile your own X server:
|
||
|
||
(1) Compile the X server to use ".so" modules:
|
||
|
||
- Uncomment the line "MakeDllModules Yes" in
|
||
xc/config/cf/xorgsite.def.
|
||
|
||
If you are compiling the CVS version of the X server
|
||
(the one that will eventually become 7.0), then this is
|
||
already the default.
|
||
|
||
- "make World"
|
||
|
||
(2) Install the X server making sure it can't see any ".a" files. If
|
||
you install on top of an existing installation, just do
|
||
|
||
find /usr/X11R6/lib/"*.a" | sudo xargs rm
|
||
|
||
and install the newly compiled X server.
|
||
|
||
If a ".so" X server finds .a files in its module path it will
|
||
try to load those in preference to .so files and this causes
|
||
symbol resolution problems
|
||
|
||
(3) Run your new X server
|
||
|
||
(4) Run sysprof as root. This is necessary because the X server binary
|
||
for security reasons is not readable by regular users. I could tell
|
||
you why, but then I'd have to kill you.
|
||
|
||
|
||
Credits:
|
||
Lorenzo Colitti for writing the sysprof-text program
|
||
Diana Fong for the icon
|
||
Mike Frysinger for x86-64 support
|
||
Kristian H<>gsberg for the first port to the 2.6 kernel.
|
||
Owen Taylor for the symbol lookup code in memprof
|
||
|
||
|
||
S<EFBFBD>ren (sandmann@daimi.au.dk)
|