linux性能分析(1)——平均负载分析

目录

一、概念:

二、平均负载合理值:

三、系统负载趋势判断:

四、何时需要进行负载分析

五、平均负载和CPU使用率区分

六、如何检测负载升高的根源

一、概念

  平均负载:在单位时间内,系统的平均活跃进程(可运行进程和不可中断态进)数。

  • 可运行态进程:正在运行CPU的进程和正在等待CPU的进程,即ps -aux 看到R。
  • 不可中断进程:内核态中关键流程中的进程,比如等待IO响应,即ps -aux 看到D。不可断进程是对进程和硬件的保护,比如正在执行读写文件操作,在得到系统回复之前,如果进程被打断,就可能导致文件读写不一致。

二、平均负载合理值

  平均负载值含义:其值表示相对于CPU个数的负载压力大小,比如值为2时,其意味:

  • 对于有2个CPU的系统,意味着CPU刚好利用完。
  • 对于有4个CPU的系统,意味着CPU利用率才50%
  • 对于有1个CPU的系统,意味着有一半的进程在竞争CPU。

  因此,当系统平均负载小于CPU个数时,系统负载正在可接受范围,

  统计CPU个数命令:grep 'model name' /proc/cpuinfo | wc -l。

三、系统负载趋势判断

  先通过uptime命令查看:

lsm@ubuntu:~$ uptime
 15:39:26 up 20 days, 49 min,  8 users,  load average: 1.49, 1.40, 1.44

  各个值的含义:

  •   15:39:26 : 系统当前时间
  •    up 20 days, 49 min : 系统运行时间
  •    8 users : 当前用户个数
  •    load average: 1.49, 1.40, 1.44 : 分别表示1分钟,5分钟,15分钟的平均负载值

  主要利用load average的1分钟、5分钟、15分钟负载指标进行趋势分析:

  • 如果1分钟、5分钟、15分钟的平均负载值不变,说明系统运行很平稳。
  • 如果1分钟的平均负载小于15分钟的平均负载,说明系统负载正在减少。
  • 如果1分钟的平均负载大于15分钟的平均负载,说明系统负载正在增加,这种增加可能是临时的,需要观察一段时间。

四、何时需要进行负载分析

  • 如果1分钟的平均负载值大于CPU个数,一般大于70%时,说明系统正在过载,需要进行分析。
  • 发现进程响应变慢,影响到服务的正常功能。
  • 通过实时监控负载变化,发现负载突然飙升。

五、平均负载和CPU使用率区分

平均负载的概念在前面提到,其包括正在运行CPU进程、正在等待CPU、正在等待IO进程。CPU使用率是单位时间内CPU的繁忙程度。二者关系:

  • 对于CPU密集型进程,大量使用CPU,会导致平均负载升高,二者一致。
  • 对于IO密集型进程,等待IO会导致负载升高,但是由于CPU并没有被使用,因此CPU使用率并不高。
  • 对于大量等待CPU的进程调度也会引起负载升高和CPU使用率升高。

六、如何检测负载升高的根源

 1、 mpstat命令:

  • 作用:检测CPU的负载(主要关注三个指标,用户态利用率%usr,内核态利用率%sys,IO利用率%iowait)。
  • 常用用法:mpstat -P ALL 2。
  • 参数说明:-P 表示指定监控那个CPU,如果用ALL表示监控所有CPU;2,表示每隔2秒刷新。
  • 如何查看:执行mpstat -P ALL 2,会每隔2秒刷新如下打印
    lsm@ubuntu:~$ mpstat -P ALL 2
    Linux 4.4.0-31-generic (ubuntu)         01/01/2019      _x86_64_        (4 CPU)
    
    04:32:58 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    04:33:00 PM  all   48.73    0.00   10.43    0.00    0.00    1.15    0.00    0.00    0.00   39.69
    04:33:00 PM    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    04:33:00 PM    1   10.50    0.00    3.00    0.00    0.00    4.50    0.00    0.00    0.00   82.00
    04:33:00 PM    2   45.18    0.00   20.81    0.00    0.00    0.00    0.00    0.00    0.00   34.01
    04:33:00 PM    3   38.62    0.00   17.99    0.00    0.00    0.00    0.00    0.00    0.00   43.39
    

       观察%usr,%sys,%iowait指标,上图中CPU 0的%usr飙升到100%,而%iowait为0,那说明可能就是存在CPU密集型程序。

  2、pidstast命令:

  • 作用:检测进程产生的负载(主要关注,用户态利用率%usr,内核态利用率%sys,进程名Command,PID)
  • 主要用法:pidstat 2
  • 参数说明:2,表示每隔2秒进行刷新打印
  • 如何查看:执行pidstat  2,会每隔2秒刷新如下打印
lsm@ubuntu:~$ pidstat -u 2
Linux 4.4.0-31-generic (ubuntu)         01/01/2019      _x86_64_        (4 CPU)

04:33:58 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
04:34:00 PM     0         7    0.00    1.94    0.00    1.94     2  rcu_sched
04:34:00 PM     0      1427    0.49    0.97    0.00    1.46     3  vmtoolsd
04:34:00 PM     0     16957    3.40   20.87    0.00   24.27     2  Xorg
04:34:00 PM     0     17325    0.49    0.00    0.00    0.49     3  unity-panel-ser
04:34:00 PM     0     17493   21.36    5.34    0.00   26.70     1  compiz
04:34:00 PM     0     17533    1.46    0.00    0.00    1.46     1  vmtoolsd
04:34:00 PM     0     26657   64.56   11.17    0.00   75.73     3  snmp_pro
04:34:00 PM  1000     36459   98.54    0.00    0.00   98.54     0  stress
04:34:00 PM  1000     36585    0.49    0.49    0.00    0.97     1  pidstat

可以看到,stress进程导致了用户态CPU利用率%usr达到100%

3、watch:

作用:循环执行命令

常用用法:watch -d uptime,用于一直执行uptime命令,实时查看负载变化。

参数说明:-d,高亮差异化地方。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值