IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 操作系统 > LINUX > 关于Linux系统的平均负载最全面介绍

关于Linux系统的平均负载最全面介绍

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

  一、什么是系统平均负载(Load average)?

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

  系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:

  - 它没有在等待I/O操作的结果

  - 它没有主动进入等待状态(也就是没有调用'wait')

  - 没有被停止(例如:等待终止)

  例如:

  [root@opendigest root]# 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。这表示该系统的性能是可以接受的。

  二、Load average的算法

  上面的输出数据是每隔5秒钟检查一次活跃的进程数,然后根据这个数值算出来的。如果这个数除以CPU的数目,结果高于5的时候就表明系统在超负荷运转了。其算法(摘自Linux 2.4的内核代码)如下:

  文件: include/linux/sched.h:

  #define FSHIFT 11 /* nr of bits of precision */

  #define FIXED_1 (1<#define LOAD_FREQ (5*HZ) /* 5 sec intervals */

  #define EXP_1 1884 /* 1/exp(5sec/1min) as fixed-point, 2048/pow(exp(1), 5.0/60) */

  #define EXP_5 2014 /* 1/exp(5sec/5min), 2048/pow(exp(1), 5.0/300) */

  #define EXP_15 2037 /* 1/exp(5sec/15min), 2048/pow(exp(1), 5.0/900) */

  #define CALC_LOAD(load,exp,n)

  load *= exp;

  load += n*(FIXED_1-exp);

  load >>= FSHIFT;

  /**********************************************************/

  文件: kernel/timer.c:

  unsigned long avenrun[3];

  static inline void calc_load(unsigned long ticks)

  {

  unsigned long active_tasks; /* fixed-point */

  static int count = LOAD_FREQ;

  count -= ticks;

  if (count < 0) {

  count += LOAD_FREQ;

  active_tasks = count_active_tasks();

  CALC_LOAD(avenrun[0], EXP_1, active_tasks);

  CALC_LOAD(avenrun[1], EXP_5, active_tasks);

  CALC_LOAD(avenrun[2], EXP_15, active_tasks);

  }

  }

  /**********************************************************/

  文件: fs/proc/proc_misc.c:

  #define LOAD_INT(x) ((x) >> FSHIFT)

  #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)

  static int loadavg_read_proc(char *page, char **start, off_t off,

  int count, int *eof, void *data)

  {

  int a, b, c;

  int len;

  a = avenrun[0] + (FIXED_1/200);

  b = avenrun[1] + (FIXED_1/200);

  c = avenrun[2] + (FIXED_1/200);

  len = sprintf(page,&%d.%02d %d.%02d %d.%02d %ld/%d %dn&,

  LOAD_INT(a), LOAD_FRAC(a),

  LOAD_INT(b), LOAD_FRAC(b),

  LOAD_INT(c), LOAD_FRAC(c),

  nr_running(), nr_threads, last_pid);

  return proc_calc_metrics(page, start, off, count, eof, len);

  }

  三、/proc/loadavg 各项数据的含义

  /proc文件系统是一个虚拟的文件系统,不占用磁盘空间,它反映了当前操作系统在内存中的运行情况,查看/proc下的文件可以聊寄到系统的运行状态。查看系统平均负载使用&cat /proc/loadavg&命令,输出结果如下:

  0.27 0.36 0.37 4/83 4828/

  前三个数字大家都知道,是1、5、15分钟内的平均进程数(有人认为是系统负荷的百分比,其实不然,有些时候可以看到200甚至更多)。后面两个呢,一个的分子是正在运行的进程数,分母是进程总数;另一个是最近运行的进程ID号。

  四、查看系统平均负载的常用命令

  1、cat /proc/loadavg

  2、uptime

  名称: uptime

  使用权限: 所有使用者

  使用方式: uptime [-V]

  说明: uptime 提供使用者下面的资讯,不需其他参数:

  现在的时间 系统开机运转到现在经过的时间 连线的使用者数量 最近一分钟,五分钟和十五分钟的系统负载

  参数: -V 显示版本资讯。

  范例: uptime

  其结果为:

  10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99

  3、w

  功能说明:显示目前登入系统的用户信息。

  语  法:w [-fhlsuV][用户名称]

  补充说明:执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w

  指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

  参  数:

  -f  开启或关闭显示用户从何处登入系统。

  -h  不显示各栏位的标题信息列。

  -l  使用详细格式列表,此为预设值。

  -s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。

  -u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。

  -V  显示版本信息。

  4、top

  功能说明:显示,管理执行中的程序。

  语  法:top [bciqsS][d <间隔秒数>][n <执行次数>]

  补充说明:执行top指令可显示目前正在系统中执行的程序,并通过它所提供的互动式界面,用热键加以管理。

  参  数:

  b  使用批处理模式。

  c  列出程序时,显示每个程序的完整指令,包括指令名称,路径和参数等相关信息。

  d<间隔秒数>  设置top监控程序执行状况的间隔时间,单位以秒计算。

  i  执行top指令时,忽略闲置或是已成为Zombie的程序。

  n<执行次数>  设置监控信息的更新次数。

  q  持续监控程序执行的状况。

  s  使用保密模式,消除互动模式下的潜在危机。

  S  使用累计模式,其效果类似ps指令的&-S&参数。

  5、tload

  功能说明:显示系统负载状况。

  语  法:tload [-V][-d <间隔秒数>][-s <刻度大小>][终端机编号]

  补充说明:tload指令使用ASCII字符简单地以文字模式显示系统负载状态。假设不给予终端机编号,则会在执行tload指令的终端机显示负载情形。

  参  数:

  -d<间隔秒数>  设置tload检测系统负载的间隔时间,单位以秒计算。

  -s<刻度大小>  设置图表的垂直刻度大小,单位以列计算。

  -V  显示版本信息。

关键词标签:Linux

相关阅读 安装红帽子RedHat Linux9.0操作系统教程 Tomcat9.0如何安装_Tomcat9.0环境变量配置方法 多种操作系统NTP客户端配置 Linux操作系统修改IP Linux实现SCSI硬盘热插拔及在线识别 Linux下用CDMA modem拨号上网

文章评论
发表评论

热门文章 安装红帽子RedHat Linux9.0操作系统教程 安装红帽子RedHat Linux9.0操作系统教程 Linux服务器:设计高性能网站架构-LLMP Linux服务器:设计高性能网站架构-LLMP 使用Clonezilla迁移到虚拟Linux环境 使用Clonezilla迁移到虚拟Linux环境 Linux上的MRTG流量监控中心 Linux上的MRTG流量监控中心 Linux 双网卡绑定一个IP原理及实现 Linux 双网卡绑定一个IP原理及实现 linux和windows等系统远程控制ubuntu桌面 linux和windows等系统远程控制ubuntu桌面

相关下载

人气排行 Linux下获取CPUID、硬盘序列号与MAC地址 dmidecode命令查看内存型号 linux tc实现ip流量限制 安装红帽子RedHat Linux9.0操作系统教程 linux下解压rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 关机、重启、注销 命令 查看linux服务器硬盘IO读写负载 linux命令行浏览器的使用方法 Linux NFS服务固定端口及防火墙配置 U盘安装Ubuntu 10.04 Linux清除用户登录记录和命令历史方法