Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20462
  • 博文数量: 7
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-17 16:26
文章分类
文章存档

2013年(7)

我的朋友

分类: LINUX

2013-02-03 14:31:49

原文地址:linux系统负载 作者:zyd_cu

     proc文件系统是一个特殊文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。"


    1、从/proc文件系统获取相关的性能参数
    cpu使用率:    /proc/stat
    内存使用情况:      /proc/meminfo
    网络负载信息:    /proc/net/dev

相应的计算方法:(摘自:什么是proc文件系统,见参考资料)
    (1)   处理器使用率    
    (2)   内存使用率    
    (3)   流入流出数据包    
    (4)   整体网络负载    
     这些数据分别要从/proc/stat、/proc/net/dev、/proc/meminfo三个文件中提取。如里有问题或对要提取的数据不太清楚,可以使用man   proc来查看proc文件系统的联机手册。    
    (1)   处理器使用率    
    这里要从/proc/stat中提取四个数据:用户模式(user)、低优先级的用户模式(nice)、内核模式(system)以及空闲的处理器时间(idle)。它们均位于/proc/stat文件的第一行。CPU的利用率使用如下公式来计算。    
    CPU利用率  =  100   *(user + nice + system)/(user + nice   + system + idle)    
   (2)   内存使用率    
    这里需要从/proc/meminfo文件中提取两个数据,当前内存的使用量(cmem)以及内存总量(amem)。    
    内存使用百分比   = 100 * (cmem  / umem)    
    (3)网络利用率    
    为了得到网络利用率的相关数据,需要从/proc/net/dev文件中获得两个数据:从本机输出的数据包数,流入本机的数据包数。它们都位于这个文件的第四行。    
    性能收集程序开始记录下这两个数据的初始值,以后每次获得这个值后均减去这个初始值即为从集群启动开始从本节点通过的数据包。    
    利用上述数据计算出网络的平均负载,方法如下:    
    平均网络负载   =   (输出的数据包+流入的数据包)  /  2


cat /proc/loadavg命令
#cat /proc/loadavg
1.54 1.03 0.94 1/285 28156
返回数据的含义是:
lavg_1:
1分钟平均负载
lavg_5:
5分钟平均负载
lavg_15:15分钟平均负载
nr_running :采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思
nr_threads:在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)
last_pid: 最大的pid值,包括轻量级进程,即线程。

cat /proc/stat命令
#cat /proc/loadavg
cpu 119560393 366 75934979 491196419 22949796 273570 1653811 0
cpu0 24181069 1 18320054 132965211 2407486 3 18623 0
cpu1 27984558 11 21594016 126044599 2248274 0 20895 0
cpu2 27843845 349 21307705 116391192 12214581 35726 98960 0
cpu3 39550920 3 14713203 115795416 6079453 237839 1515332 0
intr 2741402899 1779118189 2 0 0 2 0 3 0 1 1 0 0
ctxt 7985896352
btime 1217386758
processes 1161591
procs_running 1
procs_blocked 0
返回的数据的含义如下:

前五行是CPU时间=user+system+nice+idle+iowait+irq+softirq(具体可以查看后面提供的备注)
“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。
“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
“btime”给出了从系统启动到现在为止的时间,单位为秒。
“processes (total_forks) 自系统启动以来所创建的任务的个数目。
“procs_running”:当前运行队列的任务的数目。
“procs_blocked”:当前被阻塞的任务的数目。

备注
user+system+nice+idle+iowait+irq+softirq的含义是:
user 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1 jiffies=0.01秒
nice 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
system 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies)
irq 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)

阅读(595) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~