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
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to