Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Dec 1997 22:15:28 -0500 (EST)
From:      David Petrou <dpetrou@KINCLAITH.PDL.CS.CMU.EDU>
To:        freebsd-hackers@freebsd.org
Subject:   RE: CPU Load
Message-ID:  <199712020316.TAA19552@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
It seems that there's a lot of misinformation being posted here re:
cpu load.  Just look at the relevant code from vm/vm_meter.c:

static void
loadav(struct loadavg *avg)
{
	register int i, nrun;
	register struct proc *p;

	for (nrun = 0, p = allproc.lh_first; p != 0; p = p->p_list.le_next) {
		switch (p->p_stat) {
		case SSLEEP:
			if (p->p_priority > PZERO || p->p_slptime != 0)
				continue;
			/* fall through */
		case SRUN:
		case SIDL:
			nrun++;
		}
	}
	for (i = 0; i < 3; i++)
		avg->ldavg[i] = (cexp[i] * avg->ldavg[i] +
		    nrun * FSCALE * (FSCALE - cexp[i])) >> FSHIFT;
}

The important part is nrun...  If a process is in SRUN or SIDL or it
has a higher priority (lower numerically) than PZERO _AND_ it has
slept less than a second, the process is counted.  (That last clause
covers fast disk operations...)

David




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