快速业务通道

学堂:当前Linux系统运行的各种参数

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-06
1、CPU
 
  在文件“/proc/stat”里面就包含了CPU的信息.每一个CPU的每一tick用在什么地方都在这个文件里面记着.后面的数字含义分别是: user、nice、sys、idle、iowait.有些版本的kernel没有iowait这一项.这些数值表示从开机到现在,CPU的每tick用 在了哪里.例如:
 
  cpu0 256279030 0 11832528 1637168262
 
  就是cpu0从开机到现在有 256279030 tick用在了user消耗,11832528用在了sys消耗.如果想计算单位时间(例如1s)里面CPU的负载,那只需要计算1秒前后数值的差除 以每一秒的tick数量就可以了.gkrellm就是这样实现的:((200 * (v2 - v1) / CPU_TICKS_PER_SECOND) 1) /2
 
  例如,第一次读取/proc/stat,user的值是256279030;一秒以 后再读一次,值是256289030,那么CPU在这一秒的user消耗就是:((200 * (256289030 - 256279030) / CPU_TICKS_PER_SECOND) 1) /2 = ((10000 * 200 / 1000000) 1) / 2 = 1%了.
 
  2、内存消耗
 
  文件“/proc/meminfo”里面包含的就是内存的信息,还包括了swap的信息.例如:
 
  $ cat /proc/meminfo
 
  total: used: free: shared: buffers: cached:
 
  Mem: 1057009664 851668992 205340672 0 67616768 367820800
 
  Swap: 2146787328 164429824 1982357504
 
  MemTotal: 1032236 kB
 
  MemFree: 200528 kB
 
  MemShared: 0 kB
 
  ……
 
  不过从gkrellm的源代码看,有些版本没有前面那两行统计的信息,只能够根据下面的Key: Value这种各式的数据收集.
 
  3、磁盘空间
 
  从gkrellm的源代码看,这个是一个很复杂的数据.磁盘分区的数据有可能分布在:/proc/mounts、/proc/diskstats、 /proc/partitions等等.如果想要检查某几个特定的路径,还需要通过mount、df等命令的帮助.为了减少麻烦,这个数据我就直接用 statfs函数直接获得了.
 
  int statfs(const char *path, struct statfs *buf);
 
  这个函数只需要输入需要检查的路径名称,就可以返回这个路径所在的分区的空间使用情况:
 
  总空间:buf.f_bsize * buf.f_blocks
 
  空余空间:buf.f_bsize * buf.f_bavail
 
  4、磁盘I/O
Empire CMS,phome.net

 
  磁盘I/O的数据也同样比较复杂,有些版本看/proc/diskstats,有些版本看/proc/partitions,还有些版本至今我也不知道在那里看……不过可以看到数据的版本也像CPU那样,需要隔一段时间取值,两次取值的差就是流量.
 
  5、网络流量
 
  网络流量也是五花八门,不过基本上都可以在/proc/net/dev里面获得.同样也是需要两次取值取其差作为流量值.
 
Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号