Linx性能优化学习笔记——CPU篇 02平均负载

前言:这个系列文章是我在学习倪朋飞老师的Linux性能优化实战中做的笔记记录,希望可以在这个新领域中有更多的理解。

平均负载是什么?

平均负载是一个综合评价指标,是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数

  • 可运行状态(R):正在使用CPU或者正在等待CPU的进程

  • 不可中断状态(D):正处于内核关键流程中的进程,这些流程是不可打断的,比如最常见的是等待硬件设备的I/O响应

使用topuptime命令可以查看:

平均负载多大合适?

首先需要明确有几个CPU,当平均负载比CPU大的时候,系统已经出现了过载。一般当平均负载高于CPU数量70%的时候,就应该分析排查负载高的问题了。

# 统计CPU核数
grep 'model name' /proc/cpuinfo | wc -l

造成平均负载的系统原因是什么?

根据平均负载的定义,以下是可能造成平均负载高的原因:

  • CPU密集型进程

  • I/O密集型进程

  • 大量等待CPU的进程调度

出现平均负载过载了如何排查问题?

介绍两个工具,mpstatpidstat

  • mpstat:多核CPU性能分析工具,用来实时查看每个CPU的性能指标

  • pidstat:进程性能分析工具,用来实时查看进程的CPU、内存、I/O以及上下文切换等性能指标

排查过程:

  • 通过uptime指令观察到系统的平均负载问题

    # 使用watch命令周期执行uptime,-d选项高亮变化
    watch -d uptime
  • 使用mpstat观察CPU情况,可以大概确定是哪类问题:

    # -P ALL 显示所有
    # 5 以5s为间隔
    mpstat -P ALL 5
    • 若单个CPU的use较高,则可能是某进程CPU占用过高造成的性能问题

    • 若单个CPU的iowait较高,则对应的是某进程I/O密集,其他指标sys等也类似分析

    • 若全部CPU的use都很高,说明很可能是等待CPU的进程很多,他们都在轮番占用CPU

  • 使用pidstat进一步查看分析,可以将问题定位到特定进程:

    # -u 报告CPU利用率
    # 5 1 以5s为间隔显示1组数组
    pidstat -u 5 1
    • 若是存在CPU占用较高的进程,则通过该命令可以确定特定的进程

    • 对于I/O密集型进程的确定,使用以下命令选项:

      pidstat -d
    • 若是存在等待CPU的进程很多的情况,则通过wait项可进一步确定该原因

总结

通过对于平均负载的观察,我们可以观测内核的整体性能,若出现问题,需要进一步确定是由于某CPU的CPU或I/O占比较高导致,还是系统中有大量进程导致,可以借助mpstat命令观察CPU。对于特定进程,我们可以使用pidstat命令来确定该进程。分析出性能瓶颈后我们在做相应的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值