oramon程序可以记录Oracle数据库的很多运行特征, 但还是需要记录一些OS级别的值, 最想要的是Load Average的三个值了, 另外还有CPU的利用率了. 在Solaris下可以用kstat库来取得这些值, 在AIX下可以用perfstat库的函数, 来搞定这些值. 但是在Linux上, 虽然说它是开源的, 但却没有搞定这几个值如何用C程序取出来的.

    用了最土的方法, 现在用的Linux基本上都是Kernel 2.4以上的了, 取得Load Average的话, 就直接访问"/proc/loadavg"算了.

float getloadavg1m()
{
  FILE *fp=NULL;
  char tmpbuf[128];

  if ((fp=fopen("/proc/loadavg","r"))!=NULL)
  {
      fscanf(fp,"%s",tempbuf);
      fclose(fp);
      return atof(tempbuf);
  }
  return 0f;
}

    这种打开文件的方法, 绝对算是很土, 但是运行还是很稳定, 每隔十秒钟打开一次应当问题不大. 只是取CPU的利用率, 就搞不定了, 谁能介绍更好的方法?