I hacked up a little strace parser then when fed input from an strace call like
this:
strace -T -ttt -o logfile svn co file:///repos/ mystuff
and you run
processTrace.py logfile
it outputs lines that tell you which file took the most I/O by name. And it
also accumulates the time statistics by system call (strace will do that
already). So you can tell which system calls are eating up all the time. File
I/O calls open/read/write/close timeings are kept per file in the filesystem.
So if you're doing tons of file I/O you can tell which files you are doing it
to, rather then just guessing.
This is the sample output from an strace of a checkout of the linux kernel
include directory.
5.20819900 0L 10287803L "r1495/asm-ia64/.svn/tmp/entries"
5.27630900 0L 8852590L "r1495/asm-s390/.svn/tmp/entries"
5.46784100 0L 10153827L "r1495/asm-arm/.svn/tmp/entries"
5.55891500 0L 11110494L "r1495/asm-alpha/.svn/tmp/entries"
5.76720700 0L 12014341L "r1495/asm-sh/.svn/tmp/entries"
6.11012900 0L 12427375L "r1495/asm-i386/.svn/tmp/entries"
6.30406000 0L 13607264L "r1495/asm-mips64/.svn/tmp/entries"
7.14565200 0L 17939960L "r1495/asm-sparc64/.svn/tmp/entries"
7.69736600 0L 19489789L "r1495/asm-mips/.svn/tmp/entries"
7.93170700 0L 20804071L "r1495/asm-ppc/.svn/tmp/entries"
8.15309700 pread(
8.28073600 0L 21679283L "r1495/asm-sparc/.svn/tmp/entries"
8.36428500 lstat64(
8.42225500 stat64(
8.44870100 0L 24868091L "r1495/asm-m68k/.svn/tmp/entries"
13.95042100 rename(
33.43351700 0L 277292811L "r1495/linux/.svn/tmp/entries"
First column is in seconds, the second one is bytes read, then bytes written,
then file,
or the second column is the name of a system call.
If anybody things it's useful, I'll happily commit it to the /tools/dev section.
Kirby
--
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Mar 15 02:19:58 2002