Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Apr 2004 14:53:02 -0600
From:      Dan Nelson <dnelson@allantgroup.com>
To:        Dag-Erling Smorgrav <des@des.no>
Cc:        Jose Marcio Martins da Cruz <Jose-Marcio.Martins@ensmp.fr>
Subject:   Re: Pointers about CPU load measuring
Message-ID:  <20040402205301.GD6724@dan.emsphone.com>
In-Reply-To: <xzpsmfm5dn8.fsf@dwp.des.no>
References:  <406D6CEF.9030501@ensmp.fr> <xzpsmfm5dn8.fsf@dwp.des.no>

next in thread | previous in thread | raw e-mail | index | archive | help
In the last episode (Apr 02), Dag-Erling Smorgrav said:
> Jose Marcio Martins da Cruz <Jose-Marcio.Martins@ensmp.fr> writes:
> > Someone can send some pointers on how to measure global CPU load under
> > FreeBSD from a C program ? I'm looking for values for
> > idle/kernel/user, in a similar way as does top. Is there any pointer
> > or doc ?. I'd like to avoir browsing top code.
> 
> Use sysctlbyname(3) to retrieve vm.loadavg, which is a struct loadavg
> (defined in <sys/resource.h>)

Actually the kern.cp_time variable might be better if you want
idle/kernel/user values. It returns a long cp_time[CPUSTATES]; the
states are listed in <sys/resource.h>.  Top calculates percentages by
keeping the previous interval values, calculating diffs, totaling up
the diffs, and setting percentage[cpustate] = diff[cpustate]/totaldiff.

-- 
	Dan Nelson
	dnelson@allantgroup.com



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