目前Linux系统运行的各种参数

分类: 桌面应用   出处:iocblog整理  更新时间:2009-04-12   添加到收藏  

  1、cpu
 
  在文件“/proc/stat”里面就包含了cpu的信息。每一个cpu的每一tick用在什么地方都在这个文件里面记着。后面的数字含义分别是: user、nice、sys、idle、iowait.有些版本的kernel没有iowait这一项。这些数值表示从开机到现在,cpu的每tick用 在了哪里。例如:
 
  cpu0 256279030 0 11832528 1637168262
 [来源www.iocblog.net]
  就是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[来源www.iocblog.net]

[1] [2] 下一页



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。