From owner-freebsd-current@FreeBSD.ORG Fri Oct 28 17:10:11 2005 Return-Path: X-Original-To: current@freebsd.org Delivered-To: freebsd-current@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0967316A41F; Fri, 28 Oct 2005 17:10:11 +0000 (GMT) (envelope-from julian@elischer.org) Received: from delight.idiom.com (outbound.idiom.com [216.240.47.196]) by mx1.FreeBSD.org (Postfix) with ESMTP id A981743D45; Fri, 28 Oct 2005 17:10:10 +0000 (GMT) (envelope-from julian@elischer.org) Received: from idiom.com (idiom.com [216.240.32.1]) by delight.idiom.com (Postfix) with ESMTP id E05921F9601; Fri, 28 Oct 2005 10:10:09 -0700 (PDT) Received: from [192.168.2.6] (home.elischer.org [216.240.48.38]) by idiom.com (8.12.11/8.12.11) with ESMTP id j9SHA42B069030; Fri, 28 Oct 2005 10:10:06 -0700 (PDT) (envelope-from julian@elischer.org) Message-ID: <43625B69.9080400@elischer.org> Date: Fri, 28 Oct 2005 10:10:01 -0700 From: Julian Elischer User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.11) Gecko/20050727 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Poul-Henning Kamp References: <32412.1130505646@critter.freebsd.dk> In-Reply-To: <32412.1130505646@critter.freebsd.dk> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: Pertti Kosunen , Robert Watson , David Xu , "Yuriy N. Shkandybin" , current@freebsd.org Subject: Re: Timers and timing, was: MySQL Performance 6.0rc1 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Oct 2005 17:10:11 -0000 Poul-Henning Kamp wrote: >In message <20051028140556.W20147@fledge.watson.org>, Robert Watson writes: > > >>On Fri, 28 Oct 2005, David Xu wrote: >> >> >> >>>Poul-Henning Kamp wrote: >>> >>> >>>>In message <4361FDBE.7000500@freebsd.org>, David Xu writes: >>>> >>>>the correct way to optimize this would be to add a time(2) systemcall >>>>which returns the value of the kernel global time_second. >>>> >>>> >>>Can we make a page in kernel address space which is readable my user >>>code? put the variable in the page, I know read an integer is atomic-op, >>>needn't lock, so syscall is not needed. >>> >>> >>This approach has a lot of merit, as we can also potentially export other >>information there (such as kernel preferences for system call mechanisms). >> >> > >Yes, there are many advantages to this approach, but we need a solution >to the API versioning problem before we head that way. > >For anyone wanting to look at this, three are a number of nasties >to remember: > >1. How does userland get hold of the page ? Does it open a magic > device ? Use a magic syscall ? Or does all processes just get > the page by default ? > >2. Where in the address space do we put it ? > > Linux does this and even implements syscalls through it I believe. We'll probably need to implement it eventually for linux compat. >3. Layout and alignment issues. Remember that things change size > over time. (Version numbers for each element ?) And that cross- > arch support is desirable (32bit i386 binaries on 64bit amd64 arch) > >4. Do guarantee a syscall fallback for all facilities if there is version > skew, or do we abort the program ? > >5. Do we want a global system page and a per process page while we > are at it. There is plenty of stuff we could put in the per-proc > page: pid, ppid, resource usage, proctitle etc. > > > > >>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 ? > > >