From owner-freebsd-current@FreeBSD.ORG Wed Mar 1 18:56:52 2006 Return-Path: X-Original-To: freebsd-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 A98D116A420; Wed, 1 Mar 2006 18:56:52 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0481743D45; Wed, 1 Mar 2006 18:56:51 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from localhost (john@localhost [127.0.0.1]) by server.baldwin.cx (8.13.4/8.13.4) with ESMTP id k21IumRw027049; Wed, 1 Mar 2006 13:56:49 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: freebsd-current@freebsd.org Date: Wed, 1 Mar 2006 13:57:10 -0500 User-Agent: KMail/1.9.1 References: <4405E745.9040604@rogers.com> In-Reply-To: <4405E745.9040604@rogers.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200603011357.12175.jhb@freebsd.org> X-Virus-Scanned: ClamAV 0.87.1/1308/Wed Mar 1 05:13:39 2006 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-1.4 required=4.2 tests=ALL_TRUSTED,AWL autolearn=ham version=3.1.0 X-Spam-Checker-Version: SpamAssassin 3.1.0 (2005-09-13) on server.baldwin.cx Cc: Mike Jakubik Subject: Re: Still seeing "calcru: runtime went backwards" messages 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: Wed, 01 Mar 2006 18:56:52 -0000 On Wednesday 01 March 2006 13:26, Mike Jakubik wrote: > FYI, I just did a fresh cvsup and buildworld yesterday night, and i am > still getting the clacru messages: > > Mar 1 02:41:37 fbsd kernel: calcru: runtime went backwards from 32465 > usec to 32464 usec for pid 490 (sh) > Mar 1 02:41:37 fbsd kernel: u 0:0/0 s 1:32465/32464 i 0:0/0 > Mar 1 02:41:37 fbsd kernel: calcru: runtime went backwards from 17198 > usec to 17197 usec for pid 318 (devd) > Mar 1 02:41:37 fbsd kernel: u 0:0/0 s 2:17198/17197 i 0:0/0 > Mar 1 02:45:45 fbsd kernel: calcru: runtime went backwards from 3403872 > usec to 3403870 usec for pid 722 (perl5.8.8) > Mar 1 02:45:45 fbsd kernel: u 367:2852102/2852101 s 71:551769/551768 i > 0:1/1 > Mar 1 02:45:45 fbsd kernel: calcru: runtime went backwards from 5135265 > usec to 5135263 usec for pid 1 (init) > Mar 1 02:45:45 fbsd kernel: u 298:2383658/2383657 s 344:2751606/2751605 > i 0:1/1 Try this fix for one. It fixes the case that once time goes backward once we keep using the last known time rather than using the new shorter time: Index: kern_resource.c =================================================================== RCS file: /usr/cvs/src/sys/kern/kern_resource.c,v retrieving revision 1.156 diff -u -r1.156 kern_resource.c --- kern_resource.c 22 Feb 2006 16:58:48 -0000 1.156 +++ kern_resource.c 22 Feb 2006 17:00:38 -0000 @@ -761,14 +761,19 @@ ut = ruxp->rux_uticks; st = ruxp->rux_sticks; it = ruxp->rux_iticks; - tu = ruxp->rux_runtime; - tu = cputick2usec(tu); tt = ut + st + it; if (tt == 0) { st = 1; tt = 1; } + tu = cputick2usec(ruxp->rux_runtime); ptu = ruxp->rux_uu + ruxp->rux_su + ruxp->rux_iu; + if (tu < ptu) { + printf( +"calcru: runtime went backwards from %ju usec to %ju usec for pid %d (%s)\n", + (uintmax_t)ptu, (uintmax_t)tu, p->p_pid, p->p_comm); + tu = ptu; + } if ((int64_t)tu < 0) { printf("calcru: negative runtime of %jd usec for pid %d (%s)\n", (intmax_t)tu, p->p_pid, p->p_comm); @@ -779,16 +784,6 @@ uu = (tu * ut) / tt; su = (tu * st) / tt; iu = tu - uu - su; - if (tu < ptu) { - printf( -"calcru: runtime went backwards from %ju usec to %ju usec for pid %d (%s)\n", - (uintmax_t)ptu, (uintmax_t)tu, p->p_pid, p->p_comm); - printf("u %ju:%ju/%ju s %ju:%ju/%ju i %ju:%ju/%ju\n", - (uintmax_t)ut, (uintmax_t)ruxp->rux_uu, uu, - (uintmax_t)st, (uintmax_t)ruxp->rux_su, su, - (uintmax_t)it, (uintmax_t)ruxp->rux_iu, iu); - tu = ptu; - } #if 0 /* Enforce monotonicity. */ if (uu < ruxp->rux_uu || su < ruxp->rux_su || iu < ruxp->rux_iu) { -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org