Pointers about CPU load measuring

Dan Nelson dnelson at allantgroup.com
Fri Apr 2 12:53:11 PST 2004

In the last episode (Apr 02), Dag-Erling Smorgrav said:
> Jose Marcio Martins da Cruz <Jose-Marcio.Martins at 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 at allantgroup.com

More information about the freebsd-hackers mailing list