Hi,
I need a method to get the load of a process in percent of cpu time on a
per second basis, just like top on Linux does. Top on OpenBSD seems to
calculate the %cpu like ps. ps(1) states the following:
%cpu Alias: pcpu. The CPU utilization of the process; this is
a decaying average over up to a minute of previous (real)
time. Since the time base over which this is computed
varies (since processes may be very young) it is possible
for the sum of all %cpu fields to exceed 100%.
As I couldn't find something that does the calculation on a per second
basis, I started to write something on my own. For that reason I plan to
look at struct kinfo_proc2 field p_cpticks of libkvm, but this field
gives me some odd values, which I'm unable to interpret. Could you
please comment on the following code?
int main(int argc, char** argv)
{
kvm_t *kd;
struct kinfo_proc2 *info;
int cnt;
if(argc != 2)
{
printf("Please provide pid\n");
exit(1);
}
kd = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, "error");
if(!kd)
exit(1);
if(cnt != 1)
{
printf("No process found\n");
exit(1);
}
info = kvm_getproc2(kd, KERN_PROC_PID, atoi(argv[1]),
sizeof(struct kinfo_proc2), &cnt);
printf("%x\n",(double)info->p_cpticks);
exit(0);
}
Strange value:
$ for((i=0;i<4;i++)); do ./cpucalc 28175 ; done
6
6
6
6
Any help would be appreciated
--
Sebastian Spies e-mail: [email protected]
[demime 1.01d removed an attachment of type application/pgp-signature which had
a name of signature.asc]