OS中的Load Average是很有用的信息,在原先的版本中是没有的,今日增加了这个信息.
......
OS Load: 2.37 2.56 2.56
......
有了这些信息后,可以使这些工具更具有价值. 源程序来自这儿, 在这儿我也抄了一份.
#include <sys/param.h>
#include <kstat.h>
#include <string.h>
#include <stdio.h>
main(void)
{
int i;
kstat_ctl_t *kc;
kstat_t *ksp;
kstat_named_t *kn1,*kn5,*kn15;
if ((kc = kstat_open()) == 0)
{
perror("kstat_open");
exit(1);
}
if (( ksp = kstat_lookup(kc, "unix", 0, "system_misc")) == 0)
{
perror("kstat_lookup");
exit(1);
}
for(i = 0; i < 15; i++)
{
if (kstat_read(kc, ksp,0) == -1)
{
perror("kstat_read");
exit(1);
}
if ((kn1 = kstat_data_lookup(ksp, "avenrun_1min")) == 0)
{
fprintf(stderr,"avenrun_1min not found by kstat\n");
exit(1);
}
if ((kn5 = kstat_data_lookup(ksp, "avenrun_5min")) == 0)
{
fprintf(stderr,"avenrun_5min not found by kstat\n");
exit(1);
}
if ((kn15 = kstat_data_lookup(ksp, "avenrun_15min")) == 0)
{
fprintf(stderr,"avenrun_15min not found by kstat\n");
exit(1);
}
printf("Load:\t1-Min: %.2f\t5-Min: %.2f\t15-Min: %.2f\n",
(double)kn1->value.ul/FSCALE,
(double)kn5->value.ul/FSCALE,
(double)kn15->value.ul/FSCALE);
sleep(60);
}
exit(0);
}