How to reliably measure user time (getrusage(2))
Ulrich Spoerlein
q at uni.de
Tue Jan 11 01:41:01 PST 2005
Hi all,
I need to measure the time spent in user mode for rather short-lived
processes. Sadly the results vary highly
% while true;do \time -p woptsa tsplib/pla7397/pla7397.tsp 2>&1|sed -n /user/p;done
user 1.13
user 0.67
user 0.65
user 0.65
user 0.64
user 0.65
% while true;do \time -p woptsa tsplib/pla7397/pla7397.tsp 2>&1|sed -n /user/p;sleep 1;done
user 1.22
user 0.87
user 0.75
user 0.67
user 0.86
user 0.74
% while true;do \time -p woptsa tsplib/pla7397/pla7397.tsp 2>&1|sed -n /user/p;sleep 3;done
user 1.24
user 1.23
user 1.27
user 1.27
user 1.10
user 1.19
I fail to see how sleeping or waiting between consecutive runs could
affect user time. Everything from page faults to I/O is handled inside
the kernel, so it shouldn't affect user-time, no?
The only library function not taking constant time I could think of
would be malloc(3), is that a possibility?
Inside the program I'm using getrusage(2) to measure the time my program
is executing. kern.hz is set to 1000, this is on a 5-STABLE 1.5GHz
Pentium-M. What to do?
Ulrich Spoerlein
--
PGP Key ID: F0DB9F44 Encrypted mail welcome!
Fingerprint: F1CE D062 0CA9 ADE3 349B 2FE8 980A C6B5 F0DB 9F44
Ok, which part of "Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn."
didn't you understand?
More information about the freebsd-questions
mailing list