cpu-平均负载篇

作者: Starlightskm | 来源:发表于2019-10-15 16:38 被阅读0次

    cpu-平均负载篇

    什么是平均负载

    平均负载指的是单位时间内,系统处于可运行状态或者不可中断状态的平均进程数
    可运行状态:
    - 指的是使用CPU或者正在等待CPU的进程,通过ps查看是在R状态的进程

    不可中断状态
    - 指的是内核态关键流程中的进程,并且这些进程是不可打断的,通过ps查看是在D状态的进程

    平均负载的合理值

    • 首先要了解系统的CPU个数
    [root@VM_0_173_centos ~]# grep 'model name' /proc/cpuinfo |wc -l
    8
    
    • 当平均负载大于上述的CPU个数,这说明系统已经出现了过载
    • 要通过系统的1min,5min,15min的负载趋势来判断负载的趋势
    • 当平均负载高于CPU数量的70%的时候,就需要进一步分析负载高的问题了

    平均负载与CPU使用率

    CPU使用率
    - 是单位时间内CPU繁忙程度的统计,跟平均负载不一定完全对应
    - CPU密集型进程,使用大量CPU会大致平均负载升高,此时二者是一致的
    - IO密集型进程,等待IO也会导致CPU平均负载升高,但CPU使用率不一定很高
    - 大量等待CPU的进程调度会导致二者都比较高

    案例分析

    工具:
    - iostat:
    - mpstat:是一个常用的CPU性能分析工具,用来实时查看每个CPU的性能指标,以及所有CPU的平均指标
    - pidstat:进程性能分析工具,用来查看实时进程的CPU,内存,IO,以及上下文切换等性能指标
    环境:
    - centos7
    - yum -y install stress sysstat

    场景一: CPU密集型进程

    需要开启四个终端:
    第一个终端执行stress,模拟CPU 100%使用率的场景

    [root@www ~]# stress --cpu 1 --timeout 600
    

    第二个终端执行如下,然后观察平均负载变化情况

    [root@www ~]# watch -d uptime
    

    第三个终端执行如下,查看到CPU的使用率

    [root@www ~]# mpstat -P ALL 5
    

    第四个终端,通过pidstat去定位哪个PID占用的CPU资源比较高

    [root@www ~]# pidstat -u 5 1
    

    IO 密集型进程

    需要开启四个终端:
    第一个终端执行stress,模拟IO压力

    [root@www ~]# stress --cpu 1 --timeout 600
    

    第二个终端执行如下,然后观察平均负载变化情况

    [root@www ~]# watch -d uptime
    

    第三个终端执行如下,查看到CPU的使用率

    [root@www ~]# mpstat -P ALL 5
    

    第四个终端,通过pidstat去定位哪个PID占用的CPU资源比较高

    [root@www ~]# pidstat -u 5 1
    

    大量进程场景

    需要开启四个终端:
    第一个终端执行stress,模拟8个进程

    [root@www ~]# stress -c 8 --timeout 600
    

    第二个终端执行如下,然后观察平均负载变化情况

    [root@www ~]# watch -d uptime
    

    第三个终端执行如下,查看到CPU的使用率

    [root@www ~]# mpstat -P ALL 5
    

    第四个终端,通过pidstat去定位哪个PID占用的资源比较高

    [root@www ~]# pidstat -u 5 1
    

    相关文章

      网友评论

        本文标题:cpu-平均负载篇

        本文链接:https://www.haomeiwen.com/subject/oobsmctx.html