平均负载(Load average)

load average 的含义
平均负载(load average)是指系统的运行队列的平均利用率,也可以认为是可运行进程的平均数。

top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载表示

  系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:

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

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

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

很多人会这样理解负载均值:三个数分别代表不同时间段的系统平均负载(一分钟、五 分钟、以及十五分钟),它们的数字当然是越小越好。数字越高,说明服务器的负载越 大,这也可能是服务器出现某种问题的信号。

  而事实不完全如此,是什么因素构成了负载均值的大小,以及如何区分它们目前的状况是 “好”还是“糟糕”?什么时候应该注意哪些不正常的数值?

  回答这些问题之前,首先需要了解下这些数值背后的些知识。我们先用最简单的例子说明, 一台只配备一块单核处理器的服务器。

以路况为例, 单核CPU、单车道 情况如下:

• 0.00-1.00 之间的数字表示此时路况非常良好,没有拥堵,车辆可以毫无阻碍地通过。
• 1.00 表示道路还算正常,但有可能会恶化并造成拥堵。此时系统已经没有多余的资源了,管理员需要进行优化。
• 1.00-*** 表示路况不太好了,如果到达2.00表示有桥上车辆一倍数目的车辆正在等待。这种情况你必须进行检查了。
多核CPU - 多车道 情况如下:

多核CPU的话,满负荷状态的数字为 "1.00 * CPU核数",即双核CPU为2.00,四核CPU为4.00。 

 
一般的进程需要消耗CPU、内存、磁盘I/O、网络I/O等资源,在这种情况下,平均负载就不是单独指的CPU使用情况。即内存、磁盘、网络等因素也可以影响系统的平均负载值。 
在单核处理器中,平均负载值为1或者小于1的时候,系统处理进程会非常轻松,即负载很低。当达到3的时候,就会显得很忙,达到5或者8的时候就不能很好的处理进程了(其中5和8目前还是个争议的阈值,为了保守起见,建议选择低的)。

 

查看load average 数据
下面几个命令都可以看到 load average
# top 
# uptime 
# w
截图如下:
 
top 命令的

 
uptime 命令的

w 命令的

 
这里的 load average 的三个值分别指系统在最后 1/5/15分钟 的平均负载值。
根据经验:我们应该把重点放在5/15分钟的平均负载,因为1分钟的平均负载太频繁,一瞬间的高并发就会导致该值的大幅度改变。

 

 

 

 

转载于:https://www.cnblogs.com/qianyuliang/p/9155196.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Load average负载均衡)是一个表示系统负荷的指标,它通常用于衡量系统的繁忙程度。在Linux系统中,load average通常指的是系统在特定时间间隔内的平均进程数,其值是一个三元组,分别表示1分钟、5分钟和15分钟内的平均值。例如,一个系统的load average为 0.50,1.00,2.00,表示在过去1分钟、5分钟和15分钟内,系统的平均进程数分别为0.50,1.00和2.00。 在Linux系统中,可以使用uptime命令或者/proc/loadavg文件来获取load average值。以下是一个使用C语言获取load average值的示例代码: ```c #include <stdio.h> #include <stdlib.h> void get_load_avg(double *load_avg_1, double *load_avg_5, double *load_avg_15) { FILE *fp; double la1, la5, la15; // 打开/proc/loadavg文件并读取load average值 fp = fopen("/proc/loadavg", "r"); if (fp == NULL) { printf("Error: failed to open /proc/loadavg file.\n"); exit(1); } fscanf(fp, "%lf %lf %lf", &la1, &la5, &la15); fclose(fp); // 将load average值保存到传入的指针变量中 *load_avg_1 = la1; *load_avg_5 = la5; *load_avg_15 = la15; } int main() { double load_avg_1, load_avg_5, load_avg_15; // 获取load average值 get_load_avg(&load_avg_1, &load_avg_5, &load_avg_15); printf("Load average: %.2lf, %.2lf, %.2lf\n", load_avg_1, load_avg_5, load_avg_15); return 0; } ``` 该函数打开/proc/loadavg文件并读取其中的load average值,然后将这些值保存到传入的指针变量中。最后在主函数中输出load average值即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值