Mike Mason wrote:
I'm writing a script that attempts to measure how long it takes
system calls to finish. It uses gettimeofday_ns() to get the time at
entry and exit, then calculates the delta. Simple. It occurred me,
however, that a system call can start on one cpu and finish on
another. Now I'm wondering if I can rely on gettimeofday_ns() for
this type of measurement. If not, is there a better way to do this?
It should work, with the caveat of bug #3916. The gettimeofday results
are system time, so they should be consistent across CPUs.
I'd also like to break down the system call latency into cpu and wait
times. I thought of calculating the delta of utime+stime from
task_struct to get cpu time, then subtracting that from the overall
delta to get wait time. Should this work or am I missing something?
This will include any time while you were context-switched away -- is
that your intention?