Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Jan 2006 17:45:36 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        "Poul-Henning Kamp" <phk@phk.freebsd.dk>
Cc:        current@freebsd.org, freebsd-arch@freebsd.org
Subject:   Re: [TEST/REVIEW] CPU accounting patches
Message-ID:  <200601241745.38514.jhb@freebsd.org>
In-Reply-To: <24201.1138140983@critter.freebsd.dk>
References:  <24201.1138140983@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 24 January 2006 17:16, Poul-Henning Kamp wrote:
> In message <200601241709.03450.jhb@freebsd.org>, John Baldwin writes:
> >On Tuesday 24 January 2006 16:10, Poul-Henning Kamp wrote:
> >> Here is a new version of my cpu accounting change patch.
> >
> >The XXX in calcru1() you can remove.  The rux you are adding the current
> > time to is a local rusage_ext on the stack.
>
> I found that out myself and forgot to remove the XXX :-)
>
> >However, your changes probably make
> >it bogus in that the current code assumes it can subtract the start time
> > of another CPU (for a thread running on another CPU) from the current
> > time on this CPU to get the amount of time the other thread has been
> > running on the other CPU since it last updated p->p_rux.rux_runtime.
>
> This is when we call calcru on a running process ?
>
> Yeah, that's a problem.

Yeah, SIGINFO is an example, and getrusage() of another process might run into 
this, too.

> I'd tend to say we should just forget about accounting for the
> current quantum in that case.

It was added to fix some of the "time going backwards" and "negative uptime" 
stuff I think.  Ask Bruce.

> This is a valid handling IMO because the result can never be used
> in any final or definitive kind of way anyway.  When the process
> finishes or deschedules the numbers will get updated correctly.

Unfortunately calcru() updates the millisecond counts (uu, su, iu) for running 
processes and I think having a bogus runtime gets that very confused.

> Doing this may also simplify the locking of calcru ?

Nah, it already runs lockless in some cases I think.

> >Other than that this patch looks fine to me.  FYI, Alpha also has a
> > per-cpu counter (RPCC) that is used for the timecounter on UP Alphas.
>
> My Alpha is hosed right now and doesn't want to boot 6.0-R.  I havn't had
> time to boot my 5.0-R on it and do the upgrade to -current the long way.

Heh, I have one running head atm.  However, it's second CPU is having issues 
(I think the CPU fan has died) so it's less useful than in the past. :(

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



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