`
m635674608
  • 浏览: 5042737 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Linux系统下CPU使用(load average)梳理

 
阅读更多

在平时的运维工作中,当一台服务器的性能出现问题时,通常会去看当前的CPU使用情况,尤其是看下CPU的负载情况(load average)。
要想获得服务器的CPU负载情况,有下面三种命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1)w命令
[root@localhost ~]# w
 12:12:41 up 167 days, 20:46,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.1.5      10:01    1.00s  0.11s  0.00s w
root     pts/2    192.168.1.5      10:19    1:47m  0.04s  0.04s -bash
 
2)uptime命令
[root@localhost ~]# uptime
 12:12:55 up 167 days, 20:46,  2 users,  load average: 0.00, 0.01, 0.05
 
3)top命令
[root@localhost ~]# top
top - 12:13:22 up 167 days, 20:47,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 272 total,   1 running, 271 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 65759080 total, 58842616 free,   547908 used,  6368556 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used. 64264884 avail Mem
................

简单说下CPU负载和CPU利用率的区别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1)CPU利用率:显示的是程序在运行期间实时占用的CPU百分比
 
2)CPU负载:显示的是一段时间内正在使用和等待使用CPU的平均任务数。
CPU利用率高,并不意味着负载就一定 大。
举例来说:如果我有一个程序它需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是趋近于“1”,因为 CPU仅负责一个工作嘛!
如果同时执行这样的程序两个呢?CPU的使用率还是100%,但是工作负载则变成2了。所以也就是说,当CPU的工作负载越大, 代表CPU必须要在不同的工作之间进行频繁的工作切换。
 
------------------------下面通过一个电话亭打电话的比喻来说明这两者之间的区别------------------------
某公用电话亭,有一个人在打电话,四个人在等待,每人限定使用电话一分钟,若有人一分钟之内没有打完电话,只能挂掉电话去排队,等待下一轮。
电话在这里就相当于CPU,而正在或等待打电话的人就相当于任务数。
 
在电话亭使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队,这个人数的变化就相当于任务数的增减。
为了统计平均负载情况,我们5分钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。
 
有的人拿起电话就打,一直打完1分钟,而有的人可能前三十秒在找电话号码,或者在犹豫要不要打,后三十秒才真正在打电话。如果把电话看作CPU,人数看作任务,我们就说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。
当然, CPU并不会在前三十秒工作,后三十秒歇着,只是说,有的程序涉及到大量的计算,所以CPU利用率就高,而有的程序牵涉到计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高是低,跟后面有多少任务在排队没有必然关系。

load average相关梳理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
load average表示的是系统的平均负荷,即CPU的Load。
它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。
它包括3个数字,分别表示系统在1、5、15分钟内进程队列中的平均进程数量(即处理的进程情况),
原则上来说这3个数字越小越好,数字越小表示服务器的工作量越小,系统负荷比较轻
 
当CPU完全空闲的时候,平均负荷为0(即load average的值为0);当CPU工作量饱和的时候,平均负荷为1。
 
这里需要注意的是:
load average这个输出值,这三个值的大小一般不能大于系统逻辑CPU的个数
比如一台服务器有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能;
但是偶尔大于4时,倒不用担心,一般不会影响系统性能。
相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲,比如本例中的输出,CPU是比较空闲的。
 
 
-------------load average举例理解---------------
判断系统负荷是否过重,必须理解load average的真正含义。假设当前我的一台服务器只有一个CPU,所有的运算都必须由这个CPU来完成。
不妨把这个CPU想象成一座大桥,桥上只有一根车道,所有车辆都必须从这根车道上通过(很显然,这座桥只能单向通行)。
1)系统负荷为0,意味着大桥上一辆车也没有。
2)系统负荷为0.5,意味着大桥一半的路段有车。
3)系统负荷为1.0,意味着大桥的所有路段都有车,也就是说大桥已经"满"了。但是必须注意的是,直到此时大桥还是能顺畅通行的。
4)系统负荷为1.7,意味着车辆太多了,大桥已经被占满了(100%),后面等着上桥的车辆为桥面车辆的70%。
   以此类推,系统负荷2.0,意味着等待上桥的车辆与桥面的车辆一样多;
   系统负荷3.0,意味着等待上桥的车辆是桥面车辆的2倍。
   总之,当系统负荷大于1,后面的车辆就必须等待了;系统负荷越大,过桥就必须等得越久。
 
CPU的系统负荷,基本上等同于上面的类比。大桥的通行能力,就是CPU的最大工作量;桥梁上的车辆,就是一个个等待CPU处理的进程(process)。
如果CPU每分钟最多处理100个进程,那么:
系统负荷0.2,意味着CPU在这1分钟里只处理20个进程;
系统负荷1.0,意味着CPU在这1分钟 里正好处理100个进程;
系统负荷1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理。
 
为了服务器顺畅运行,系统负荷最好不要超过1.0,这样就没有进程需要等待了,所有进程都能第一时间得到处理。
很显然,1.0是一个关键值,超过这个值,系统就不在最佳状态了,就需要动手干预了。
 
 
--------1.0是系统负荷的理想值吗?-----------
不一定,系统管理员往往会留一点余地,当这个值达到0.7,就应当引起注意了。
以往经验是这样的:
当系统负荷持续大于0.7,必须开始调查了,问题出在哪里,防止情况恶化。
当系统负荷持续大于1.0,必须动手寻找解决办法,把这个值降下来。
当系统负荷达到5.0,就表明系统有很严重的问题,长时间没有响应,或者接近死机了。觉不能让系统达到这个值。
 
 
上面,假设我的这台服务器只有1个CPU。如果它装了2个CPU,就意味着服务器的处理能力翻了一倍,能够同时处理的进程数量也翻了一倍。
还是用大桥来类比,两个CPU就意味着大桥有两根车道了,通车能力翻倍了。
所以,2个CPU表明系统负荷可以达到2.0,此时每个CPU都达到100%的工作量。推广开来,n个CPU的服务器,可接受的系统负荷最大为n.0。
 
 
---------至于load average是多少才算理想,这个有争议,各有各的说法---------
个人比较赞同CPU负载小于等于"内核数乘以0.5-0.7"算是一种理想状态。
比如4核CPU的服务器,理想负载是小于等于2,最好不要超过2.8,否则性能多少会受影响。
 
不管某个CPU的性能有多好,1秒钟能处理多少任务,可以认为它无关紧要,虽然事实并非如此。
在评估CPU负载时,只以5分钟为单位做统计任务队列长度。如果每隔5分钟统计的时候,发现任务队列长度都是1,那么CPU负载就为1。
 
假如现在某台服务器只有一个单核的CPU,负载一直为1,意味着没有任务在排队,还不错。
但是这台服务器是双核CPU,等于是有4个内核,每个内核的负载为1的话,总负载为4。这就是说,如果这台服务器的CPU负载长期保持在4左右,还可以接受。
但是每个内核的负载为1,并不能算是一种理想状态!这意味着服务器的CPU一直很忙,不得清闲。
 
 
-----------load average返回三个平均值应该参考哪个值?------------
如果只有1分钟的系统负荷大于1.0,其他两个时间段都小于1.0,这表明只是暂时现象,问题不大。
如果15分钟内,平均系统负荷大于1.0(调整CPU核心数之后),表明问题持续存在,不是暂时现象。
所以应该主要观察"15分钟系统负荷",将它作为服务器正常运行的指标。
 
----------如何来降低服务器的CPU负载?--------------
最简单办法的是更换性能更好的服务器,不要想着仅仅提高CPU的性能,那没有用,CPU要发挥出它最好的性能还需要其它软硬件的配合。
在服务器其它方面配置合理的情况下,CPU数量和CPU核心数(即内核数)都会影响到CPU负载,因为任务最终是要分配到CPU核心去处理的。两块CPU要比一块CPU好,双核要比单核好。
因此,需要记住的是:除去CPU性能上的差异,CPU负载是基于内核数来计算的。有一个说法是"有多少内核,即有多少负载".
 
http://www.cnblogs.com/kevingrace/p/6668149.html
分享到:
评论

相关推荐

    详解Linux中Load_average负载

    在Linux系统中,了解`Load average`(负载平均)的概念对于系统管理和性能监控至关重要。本文将详细解释Linux系统中的负载平均值,并探讨其背后的意义以及如何根据这些值来判断系统的健康状况。 #### 一、Load ...

    Linux下获得CPU利用率和内存使用情况

    "Linux系统中获得CPU利用率和内存使用情况" 知识点: 1.Linux系统中的/proc目录:Linux系统中的/proc目录是一个虚拟文件系统,提供了对系统硬件和软件的信息。在这个目录中,我们可以找到关于系统的各种信息,如...

    LoadRunner监控到的Linux服务器CPU的一些主要指标说明.pdf

    Load Average 是 CPU 的 Load,它所包含的信息是在一段时间内 CPU 正在处理以及等待 CPU 处理的进程数之和的统计信息。Load Average 的值应该小于“CPU 个数 * 核数 *0.7” ,否则就高了。 四、 Interrupt Rate ...

    UNIX Load Average Part 3 and addendum

    Load Average的计算涉及到系统的调度算法,比如Linux中的 Completely Fair Scheduler (CFS)。这些算法确保所有进程都能得到公平的CPU时间,而Load Average则是衡量这种公平分配效果的一个度量。 了解Load Average的...

    Linux top命令 load average 参数的衡量标准

    在输入查看可用的CPU核数命令,获得12时,意味着本系统可用CPU核数12...系统负载/CPU负载–是Linux系统中CPU利用率过高或过低的度量;CPU正在执行或处于等待状态的进程数。 平均负载(load average)-是在给定的1、5和1

    UNIX Load Average Part 1

    在深入探讨UNIX系统中的负载平均值(Load Average)之前,我们需要了解一些基础知识。首先,负载平均值并不是一个UNIX命令,它更像一个嵌入式的度量指标,通常显示在像uptime和procinfo这样的其他UNIX命令的输出中。...

    压力测试衡量CPU的三个指标

    Load Average是一个难以衡量的指标,它不仅仅是CPU的使用率,还包括了CPU正在处理和等待处理的进程数之和的统计信息。Load Average可以反应系统的整体负载情况。如果Load Average太高,可能会导致系统性能下降。 ...

    Linux内核分析:页回收导致的cpu load瞬间飙高的问题分析与思考.pdf

    Linux内核分析是系统开发和维护中非常重要的一部分,本文将讨论Linux内核在页回收时出现的cpu load瞬间飙高的问题,并探讨可能的原因和解决方案。 页回收是操作系统中非常重要的一部分,它是操作系统管理物理内存的...

    分析cpu使用情况的方法-linux查看cpu使用情况.pdf

    在Linux系统中,分析CPU使用情况对于理解系统性能和优化资源分配至关重要。CPU作为系统的核心组件,其使用状况直接影响到整个系统的响应速度和整体效率。本文将深入探讨如何在Linux环境下检查和分析CPU的使用情况。 ...

    linux CFS调度以及load balance.pptx

    Linux CFS 调度和 Load Balance ...CFS 调度类是一种完全公平的调度算法,用于管理系统中的进程调度,而 Load Balance 是指系统中的进程数远远大于系统 CPU 的数量,需要使每个任务都能合理地使用 CPU 执行任务。

    unix/linux loadagv的原理详解

    在Unix和Linux操作系统中,Load Average是一个非常关键的性能指标,它用来衡量系统在特定时间段内的平均负载。本文将深入探讨Load Average的工作原理,并解析其计算方式,帮助你更好地理解和利用这一信息。 **1. ...

    linux loadaverage

    介绍linx 下的 loadaverage的概念

    在Linux系统中使用w命令和uptime命令查看系统负载.pdf

    一般来说,如果load average值接近或超过系统物理CPU核心数,尤其是持续较高,那么就可能意味着系统过于繁忙,需要进一步调查原因,可能是由于运行了大量消耗CPU的任务或者系统资源不足。 接下来,我们讨论uptime...

    UNIX Load Average Part 2

    UNIX系统中的负载平均值(Load Average),经常被系统管理员用来衡量系统性能和规划系统容量。负载平均值是指在特定时间周期内,系统处于“可运行状态”的平均进程数以及正在等待资源的进程数总和。它是系统负载的一...

    分析cpu使用情况的方法-linux查看cpu使用情况.docx

    在Linux系统中,分析CPU使用情况对于理解系统性能和优化资源分配至关重要。CPU使用情况的分析可以帮助我们识别哪些进程消耗了大量资源,从而可能导致系统响应变慢或性能瓶颈。以下是一些常用的方法和指标,以及如何...

    linux上LoadGenerator安装指导

    本文将详细介绍 Linux 上 LoadGenerator 的安装指导,从优化系统到安装 LoadGenerator 的每个步骤都会被详细解释。 一、优化系统 在安装 LoadGenerator 之前,我们需要优化 Linux 系统,以便 LoadGenerator 能够...

    Linux系统性能测试

    这些工具可以帮助我们深入了解系统的运行状态,包括CPU使用率、内存使用情况、磁盘I/O、网络流量等关键指标。 ##### **1. /proc 目录** `/proc` 是一个虚拟的文件系统,用于展示内核和进程的信息。它包含了大量...

    查看Linux下系统资源占用常用命令.docx

    在使用uptime命令时,需要注意的是,load average值越高,表明系统的性能越差。如果load average值大于5,可能表示系统存在严重的性能问题。但是,这个值还应当除以CPU数目,以便更准确地评估系统的性能。 这三种...

    Linux操作系统相关指标监控技术

    对于自动化测试和LoadRunner等性能测试工具,可以模拟多用户并发访问,生成详细的性能报告,包括CPU使用率、系统负载等指标,以便分析系统在压力下的表现。在测试过程中,通过监控这些指标,可以定位性能问题,优化...

Global site tag (gtag.js) - Google Analytics