Why user time of the process depends on machine load?

John Baldwin jhb at freebsd.org
Thu Jun 16 11:13:40 UTC 2011


On Wednesday, June 15, 2011 5:55:17 pm Dan Nelson wrote:
> In the last episode (Jun 15), Yuri said:
> > When I test performance of the code, I always observe dependency of CPU
> > user time on the presence of other CPU intense processes.  Same CPU-only
> > deterministic process that on the quiet machine completes in 220 user
> > seconds in the presence of, for example, kde rebuild would complete in
> > 261, 266 or even 379 user seconds.  I am talking about times shown by
> > time(1), not actual an execution time.  It's the same time as getrusage(2)
> > returns in ru_utime field.
> > 
> > Why time that process takes in user seconds depends on what other 
> > processes are running?
> > 
> > FreeBSD-8.2 STABLE on i7 CPU @ 9200 @ 2.67GHz.
> 
> Some possible factors:
> 
> o Intel Turbo Boost, which raises the clock rate of a single core if the
>   other cores are idle.  A single process on an idle system will run faster.
> 
> o i7 chips have a shared L3 cache across all cores, so a single process on
>   an idle system will tend to have more of its data in cache compared to a
>   system with multiple processes, so it spends less time waiting for slower
>   physical memory lookups.
> 
> o Process accounting isn't exact.  I may be wrong, but I don't think
>   timestamps are taken every time a syscall is invoked and returns.  Some
>   time marked as "user" may actually be "system" time, in which case you may
>   be seeing the effect of contention in the kernel as more processes are
>   run.

This is very true.  You can only really trust the sum of system + user time
and compare that across runs.

-- 
John Baldwin


More information about the freebsd-hackers mailing list