This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Another Newbie question about measuring time in a sys call


Another way that works now is to not use the syscall tapset.

probe kernel.function("sys_*") {
   if (target() != tid()) next
   calltime[tid()] = gettimeofday_us()
}

probe kernel.function("sys_*").return {
   if (target() != tid()) next
   c=calltime[tid()]
   if (!c) next
   delete calltime[tid()]
   ttime[probefunc()] <<< gettimeofday_us() - c
}

probe end {
   printf("\n")
   foreach (x in ttime)
     printf("%s count %d avg %d\n", x,
       @count(ttime[x]), @avg(ttime[x]))
}

global calltime, ttime

----------

Note I change the filter to compare target() to tid(). This allows you
to profile any command with the above code just by using the "-c" option
to stap.

> stap -c ps system_calls.stp
  PID TTY          TIME CMD
19129 pts/6    00:00:00 stpd
19135 pts/6    00:00:00 ps

sys_munmap count 7 avg 14
sys_mprotect count 6 avg 9
sys_mmap2 count 25 avg 8
sys_readlink count 2 avg 20
sys_rt_sigaction count 34 avg 5
sys_read count 231 avg 20
sys_rt_sigprocmask count 7 avg 6
sys_write count 3 avg 17
sys_brk count 6 avg 5
sys_open count 234 avg 12
sys_getdents64 count 2 avg 37
sys_geteuid count 2 avg 5
sys_time count 2 avg 7
sys_lseek count 2 avg 5
sys_ioctl count 2 avg 7
sys_access count 6 avg 8
sys_newuname count 2 avg 8
sys_fcntl64 count 1 avg 5
sys_fstat64 count 13 avg 5
sys_stat64 count 123 avg 9
sys_set_thread_area count 2 avg 6
sys_sigreturn count 1 avg 9
sys_close count 234 avg 6
sys_getpgrp count 1 avg 6
sys_getppid count 1 avg 5
sys_getpid count 1 avg 6
sys_getegid count 1 avg 5
sys_getgid count 1 avg 5
sys_getuid count 1 avg 5

Unfortunately we don't have a way to tell the translator which field to
use to sort the output. Of course you could just pipe the output through
sort.

Martin



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]