From owner-freebsd-current@FreeBSD.ORG Tue Dec 7 00:11:52 2010 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from alona.my.domain (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id 19AA21065673; Tue, 7 Dec 2010 00:11:51 +0000 (UTC) (envelope-from davidxu@freebsd.org) Message-ID: <4CFD7BB0.20500@freebsd.org> Date: Tue, 07 Dec 2010 08:11:28 +0800 From: David Xu User-Agent: Thunderbird 2.0.0.21 (X11/20090522) MIME-Version: 1.0 To: John Baldwin References: <20101205231829.GA68156@troutmask.apl.washington.edu> <201012060944.03196.jhb@freebsd.org> In-Reply-To: <201012060944.03196.jhb@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-current@freebsd.org, Steve Kargl Subject: Re: Process accounting/timing has broken recently 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: Tue, 07 Dec 2010 00:11:53 -0000 John Baldwin wrote: > On Sunday, December 05, 2010 6:18:29 pm Steve Kargl wrote: > >> Sometime in the last 7-10 days, some one made a >> change that has broken process accounting/timing. >> >> laptop:kargl[42] foreach i ( 0 1 2 3 4 5 6 7 8 9 ) >> foreach? time ./testf >> foreach? end >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 69.55 real 38.39 user 30.94 sys >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 68.82 real 40.95 user 27.60 sys >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 69.14 real 38.90 user 30.02 sys >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 68.79 real 40.59 user 27.99 sys >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 68.93 real 39.76 user 28.96 sys >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 68.71 real 41.21 user 27.29 sys >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 69.05 real 39.68 user 29.15 sys >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 68.99 real 39.98 user 28.80 sys >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 69.02 real 39.64 user 29.16 sys >> Max ULP: 0.501607 for x in [-18.000000:88.709999] with dx = 1.067100e-04 >> 69.38 real 37.49 user 31.67 sys >> >> testf is a numerically intensive program that tests the >> accuracy of expf() in a tight loop. User time varies >> by ~3 seconds on my lightly loaded 2 GHz core2 duo processor. >> I'm fairly certain that the code does not suddenly grow/loose >> 6 GFLOP of operations. >> > > The user/sys thing is a hack (and has been). We sample the PC at stathz (~128 > hz) to figure out a user vs sys split and use that to divide up the total > runtime (which actually is fairly accurate). All you need is for the clock > ticks to fire just a bit differently between runs to get a swing in user vs > system time. > > What I would like is to keep separate raw bintime's for user vs system time in > the raw data instead, but that would involve checking the CPU ticker more > often (e.g. twice for each syscall, interrupt, and trap in addition to the > current once per context switch). So far folks seem to be more worried about > the extra overhead rather than the loss of accuracy. > > Adding any instruction into global syscall path should be cautioned, it is worse then before, thinking about a threaded application, a userland thread may have locked a mutex and calls a system call, the overhead added to system call path can directly affect a threaded application's performance now, because the time window the mutex is held is longer than before, I have seen some people likes to fiddle with system call path, it should be cautioned. Regards, David Xu