<< 用Hibernate映射数据库视图View | 首页 | 史上最完善的web菜单menu >>

关于Unix下TOP中的平均负载load average

    

  •      用top进行性能监视,优点在于其交互性和实时性。其中有两项:load average和swap。

     在一个连续运行基本程序的服务器上,通常情况下,负载不会高于1,而在一个拥有众多图形化程序的桌面操作系统上,LA往往达到2~3,5已经一个高的负载了。当达到一定的负载时,某些后台进程就会停止接受新的请求,例如sendmail进程在负载达到12时就会停止接受新的请求。当负载达到20或30以后,系统很可能就处于反馈循环状态(被视为处于竞争状态),此时新进程的创建速度要快于系统运行这些新进程的速度。这只会导致服务速度降低和加载速度降慢,也就是“死锁”。为返回到正常状态,服务器需要花费大量的时间加载所有进程,或者系统干脆陷入死锁状态,永远也恢复不了。
    在top程序输出里显示了LA的3个数值,分别为最近5、10和15分钟内执行的工作数,是一个相当不明确的表示方法,可以用做一个判断系统繁忙程序的粗略标准,很难将其与系统的实际应用程序联系起来,仅当做系统的“流速计”,是越低越好。
    在top程序输出里还有个swap字段,数据在需要时被载入和交换出虚拟内存空间,这里显示的数据项是:Used,Free。通过查看swap项的大小来判断系统的运行情况,可能要比通过查看数据中RAM项的大小有用。
如果在交换空间里有很多信息(50%或者更多被用),则意味着数据在被载入时可能会装满物理内存,此时需要做的时添加内存。FreeBSD系统很少完全运行于交换空间以外。
    由此想到:1.这里提到了GUI对系统的影响,的确GUI对资源的占用很大,尤其时在加载资源的时候,但MS的SERVER还要发展GUI。2.swap的大小。UNIX首先考虑的是使用RAM,其次是swap;而MS好象和它相反。

  • uptime、w、top等命令都会有系统平均负载load average的输出,那么什么是系统平均负载呢?

  系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:
  - 它没有在等待I/O操作的结果
  - 它没有主动进入等待状态(也就是没有调用'wait')
  - 没有被停止(例如:等待终止)
  例如:
  [root@www2 init.d]# uptime
  7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94
  命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。
  一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。

参考:

http://bbs.chinaunix.net/archiver/?tid-255448.html

http://oracle.chinaitlab.com/backup/13546.html

http://www.teamquest.com/resources/gunther/display/5/index.htm

http://hi.baidu.com/walterfan/blog/item/fac3870a1d4ced1d95ca6b98.html

 

 

 

标签 :



发表评论 发送引用通报