Date: Fri, 3 Dec 2010 13:05:50 -0500 From: Jung-uk Kim <jkim@FreeBSD.org> To: freebsd-current@FreeBSD.org Cc: Andriy Gapon <avg@freebsd.org> Subject: Re: non-invariant tsc and cputicker Message-ID: <201012031305.53750.jkim@FreeBSD.org> In-Reply-To: <4CF92852.20705@freebsd.org> References: <4CF92852.20705@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 03 December 2010 12:26 pm, Andriy Gapon wrote: > FreeBSD uses cpu_ticks [function pointer] in a few places for a few > things like process CPU time accounting. On x86 cpu_ticks always > points to rdtsc. If TSC is not invariant that leads to incorrect > accounting of "CPU ticks". The code pretends to try to handle > changing cpufreq levels, but does that incorrectly. Arg... Probably it is my fault. :-( > I think that we could use a selected timecounter instead of "raw" > TSC if the latter is not invariant. In this case cpu_ticks calls > would be slightly costlier, but always correct. > > The change is quite trivial: > http://people.freebsd.org/~avg/tsc-cputicker.diff > > What do you think? Why don't we just fix it properly? > P.S. it's probably a good idea to merge i386 and amd64 tsc.c files > into a common x86 version, which would be the same as i386 version, > which seems to be generic enough. Agreed. Thanks, Jung-uk Kim
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201012031305.53750.jkim>