cvs commit: src/sys/sys time.h src/sys/kern kern_time.c
Robert Watson
rwatson at FreeBSD.org
Sun Nov 27 13:23:02 GMT 2005
On Mon, 28 Nov 2005, Bruce Evans wrote:
> % /*
> % * Small wrapper library to substitute implementations of gettimeofday(2)
> and
> % * time(3) with lower resolution variations. time(3) is unconditionally
> % * degraded, since it will return a truncated time anyway. gettimeofday(3)
> % * checks the TIMEWRAPPER environmental variable, which can be set to
> either
> % * "PRECISE" or "FAST".
> % */
>
> time(3) should use the environment variable too, since the fast version
> gives a value that is both imprecise and wrong. It inherits bugs from
> the kernel's time_second variable. time_second is not the current time
> truncated, but is the (current time less up to about tc_tick/HZ)
> truncated. It lags the current time by more than 1 second for up to
> about tc_tick/HZ seconds before every rollover of the correct truncated
> time.
Yes -- this is a mistake in the current library wrapper. All interfaces
modified to be "fast" or "precise" should be controlled by the
environmental variable so that testing is more consistent (i.e., other
than wrapping costs, the non-configured version should behave identically
to the non-wrapped version).
As mentioned in my previous e-mail, I have no particular commitment to any
particular implementation of "fast", but feel that to understand the
implications of time measurement costs on applications, we need some way
to express this. The POSIX APIs seem to lack any way for an application
to express its requirements for time quality vs performance, meaning that
if a system errs on the side of quality (FreeBSD), applications will
perform much more slowly and potentially no better than on a system which
errs on the side of performance (Linux). We work very hard to provide
very accurate time stamps for applications that sometimes don't need them,
and while uniformly degrading quality doesn't make sense, a bit more
expressiveness appears to be required to do better.
Robert N M Watson
More information about the cvs-src
mailing list