Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 02 Jun 2008 15:51:20 -0400
From:      Gary Stanley <gary@velocity-servers.net>
To:        Bruce Evans <brde@optusnet.com.au>
Cc:        freebsd-performance@freebsd.org
Subject:   Re: Micro-benchmark for various time syscalls...
Message-ID:  <20080602195125.245858FC1D@mx1.freebsd.org>
In-Reply-To: <20080602203217.T3100@delplex.bde.org>
References:  <2B465A44-2578-4675-AA17-EBE17A072017@chittenden.org> <20080602060624.93F5F8FC4A@mx1.freebsd.org> <20080602203217.T3100@delplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
At 06:55 AM 6/2/2008, Bruce Evans wrote:
>On Mon, 2 Jun 2008, Gary Stanley wrote:
>
>>At 12:54 AM 6/2/2008, Sean Chittenden wrote:
>>>PS  Is there a reason that time(3) can't be implemented in terms of
>>>clock_gettime(CLOCK_SECOND)?  10ms seems precise enough compared to
>>>time_t's whole second resolution.
>>
>>Another interesting idea is to map gettimeofday() to userland, sort 
>>of like darwin (commpage) and linux (vsyscall) via read only page.
>
>time() can reasonably be implemented like that, but not gettimeofday().
>gettimeofday() should have an accuracy of 1 usec and it returns a large
>data structure that cannot be locked by simple atomic accesses.  The
>read-only page would have to be updated millions of times per second
>or take a pagefault to access to give the same functionality as FreeBSD
>gettimeofday().  The updates would cost about 100% of 1 CPU.  Other
>CPUs could then read the time using locking like that in binuptime()
>but more complicated (needs an atomic update for at least the generation
>count, and probably more).  The pagefaults would give a smaller
>pessimization (I guess slightly longer to reach microtime() than via
>the current syscall, and identical time in microtime() to do the update
>on demand).

Here's a sloppy thought :) What about just rewriting gettimeofday in 
libc to query the TSC and convert it to usecs etc? That would 
eliminate any costly userland -> kernel overhead. I have a proof of 
concept here to do this.

The only bad thing is the skewing of the TSC..








Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080602195125.245858FC1D>