Re: Timers and timing, was: MySQL Performance 6.0rc1

From: Chuck Swiger <cswiger_at_mac.com>
Date: Fri, 28 Oct 2005 13:24:30 -0400
Robert Watson wrote:
> On Fri, 28 Oct 2005, David Xu wrote:
>> Poul-Henning Kamp wrote:
>>>> On the other hand, a lower risk change might be to simply add a new 
>>>> CLOCK_ type for lower resolution, and have a timer synchronize a 
>>>> variable to the system clock once every 1/10 of a second.  This 
>>>> avoids having to muck with VM layout, etc.
>>>
>>> Is the CLOCK_* namespace ours to muck about with in the first place?
>>>
>> I prefer this way, can you implement it? The global page idea is a 
>> complex, someone can slowly work on it, there are many things can be 
>> done, for example, fast syscall using sysenter/sysexit.
> 
> I'm happy to take a stab at this.
> 
> We still need someone to grab the context switch time keeping by the 
> horns and Do Something, though.

If I understand what was said earlier, the getmicrotime() kernel function ought 
to maintain the time at "(~ 1 msec)" precision.  Could getmicrotime() be 
exported as a syscall, so that we could do something like this:

--- lib/libc/gen/time.c~        Fri Jul 18 22:53:46 2003
+++ lib/libc/gen/time.c Fri Oct 28 13:04:26 2005
_at__at_ -47,7 +47,8 _at__at_
         struct timeval tt;
         time_t retval;

-       if (gettimeofday(&tt, (struct timezone *)0) < 0)
+       getmicrotime(&tt);
+       if (tt.tv_sec == 0)
                 retval = -1;
         else
                 retval = tt.tv_sec;

Note that this might even cause time(2) to return an error if the system is 
using dummyclock, which could be considered a feature.  :-)

-- 
-Chuck
Received on Fri Oct 28 2005 - 15:24:46 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:46 UTC