Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Mar 1999 00:30:02 -0800 (PST)
From:      amagai@nue.org
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/10402: times(3) non-decreaseness broken in 4.0
Message-ID:  <199903100830.AAA80437@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/10402; it has been noted by GNATS.

From: amagai@nue.org
To: freebsd-gnats-submit@freebsd.org, tobez@plab.ku.dk
Cc:  
Subject: Re: kern/10402: times(3) non-decreaseness broken in 4.0
Date: Wed, 10 Mar 1999 17:23:11 +0900 (JST)

 Dear, I have a same problem.  CPU consumption time is decreased occasionally.
 Environment: FreeBSD 2.2.8-RELEASE, FreeBSD 3.1-RELEASE
 
 ================================================================
 How to repeat: compile and run this program.
 
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/time.h>
 #include <sys/resource.h>
 
 struct rusage rusage;
 main ()
 {
   int x = 0;
   int y;
   int us, uu, ss, su;
   for(;;) {
     getrusage (0, &rusage);
     y = rusage.ru_utime.tv_sec * 1000000 + rusage.ru_utime.tv_usec
       + rusage.ru_stime.tv_sec * 1000000 + rusage.ru_stime.tv_usec;
     
     if (y < x) {
       fprintf(stderr, "%d, previous %d %d\n", y, x, y-x);
       fprintf(stderr, "\tuser %d %d   sys %d %d\n", us, uu, ss, su);
       fprintf(stderr, "\tuser %ld %ld   sys %ld %ld\n", 
 	      rusage.ru_utime.tv_sec, rusage.ru_utime.tv_usec,
 	      rusage.ru_stime.tv_sec, rusage.ru_stime.tv_usec);
     }
     x = y;
     us = rusage.ru_utime.tv_sec;
     uu = rusage.ru_utime.tv_usec;
     ss = rusage.ru_stime.tv_sec;
     su = rusage.ru_stime.tv_usec;
   }
 }
 ================================================================
 problem: I make a trace of a funcion calcru in /usr/src/sys/kern/kern_resources.c
 
            p->p_sticks  p->p_uticks  p->p_iticks totusec(adjusted)
 a call   :    76            13          37       928620
 next call:    76            13          38       928793
 
 utime and stime (in micro second) are evaluated as follows:
 
 utime = (totusec * p->p_uticks) / (p->p_sticks + p->p_uticks + p->p_iticks);
 stime = (totusec * p->p_sticks) / (p->p_sticks + p->p_uticks + p->p_iticks);
 
            p->p_sticks  p->p_uticks  p->p_iticks totusec  utime+stime
 a call   :    76            13          37       928620    655930
 next call:    76            13          38       928793    650886
                                                  decrease    5044 usec
 
 fix:
   May be difficult....
 
 Thanks
 
 Yoshiji Amagai
 New Unified Environment Research Project
 amagai@nue.org
 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




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