On Tue, Jun 11, 2013 at 04:13:53PM -0700, Roland McGrath wrote: > > Basically, top doesn't report correct CPU times. This is caused by > > sysconf() returning 1000000 while values read from /proc are true tick > > counts, hence 100 per second at most. > > In fact, that is not a "true tick count". Most modern Linux kernels have > ticks at 1024Hz, for example. The ABI for certain /proc/PID/* files is > that certain fields are in centiseconds. That has nothing (except for an > historical relationship) to do with the actual frequency used in the kernel. > > This is a bug in procfs, regardless. If it's a good idea to change what > libc uses, then we'll change. Any caller of times or clock (i.e. any > interface using clock_t) has to use sysconf (_SC_CLK_TCK) to know the > translation from "clock ticks" to units of real time.
sysconf(_SC_CLK_TCK) has to match the units returned by the times() function. That's about the only place it's relevant. My understanding is that the kernel's times() syscall and numbers reported in /proc are using the same units, but if not, times() is the one that's required to match. Rich