美文网首页
平均负载与CPU使用率的区别

平均负载与CPU使用率的区别

作者: 肉包君 | 来源:发表于2021-06-23 16:54 被阅读0次

    2021-06-23

    平均负载指单位时间内,系统处于可运行状态或不可中断状态下的平均进程数,即平均活跃进程数。
    平均负载的值一般不超过1,负载满时超过CPU个数
    运行状态:进程处于正在使用CPU或等待CPU的阶段
    不可中断状态:进程处于内核态关键流程中,这些流程不能被中断(如进程正在等待硬件设备I/O的响应时,属于不可中断状态)

    不可中断状态是系统进程与硬件设备之间的保护机制,当进程向磁盘读写数据时,在得到磁盘回复前,这个进程不会被其他进程中断或打断,这样才能保证进程数据和磁盘数据一致。

    平均负载与CPU使用率区别

    平均负载是平均活跃进程数,不仅包括正常使用CPU的进程,还包括等待CPU和等待I/O的进程
    CPU使用率是指单位时间内CPU的繁忙情况统计,不包括等待状态和空闲状态

    例:

    • CPU密集型进程,会使用大量CPU,此时平均负载和CPU使用率都会升高
    • I/O密集型进程,等待I/O的过程会使平均负载升高,但CPU使用率不一定很高
    • 大量等待CPU的进程调度,会导致平均负载升高,但CPU使用率不一定高

    测试:CPU密集型进程

    stress --cpu 1 --timeout 600     #开启一个进程对CPU进行压力测试 ,模拟CPU100%的使用率,可加&后台执行
    watch -d uptime        #查看平均负载的变化情况
    mpstat -P ALL 5 20     #查看CPU使用率的变化情况
    对比发现,CPU使用率和平均负载都增高了,但iowait为0,说明平均负载升高是因为CPU
    
    pidstat -u 5 1     #查看哪个进程占用高CPU,最终可见是stress进程占用CPU100%
    pkill -9 stress       #kill掉高占用CPU的进程即可恢复正常
    

    测试:I/O密集型进程

    stress -i 4 --hdd 1 --timeout 600 &      #用stress模拟一个高I/O的场景,后台运行
    watch -d uptime        #查看平均负载的变化情况
    mpstat -P ALL 5 20     #查看CPU使用率的变化情况
    对比发现,平均负载飙高,超过1,iowait27%左右,CPU使用率7%左右,结论:I/O密集型的进程会导致平均负载升高,CPU使用率不会很高
    
    pidstat -u 5 1     #查看进程情况,找出导致平均负载异常的进程,可见是stress引起的
    jobs       #此时后台进程还在
    pkill -9 stress     #杀死该进程
    jobs     #此时后台进程不存在
    

    相关文章

      网友评论

          本文标题:平均负载与CPU使用率的区别

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