Skip site navigation (1)Skip section navigation (2)
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>