linux性能优化-02平均负载

    每次我们系统变慢时,我们通常做的第一件事就是top命令或者uptime命令,看一下系统的负载情况,比如下面:

    我在命令行中输入uptime

    22:15:51    表示当前系统时间

    up 13 min  系统运行总时间

    2 users      当前正在登陆 用户数

    load average :0.12,0.06,0.05  表示系统1分钟,5分钟,15分钟系统的平均负载情况

   平均负载是什么?

   平均负载:指单位时间内,系统处于可运行状态不可中断状态的平均进程数,可以理解为平均活跃进程数。它和cpu 的使用率并没有直接的关系

   可运行状态是指正在使用cpu或者等待cpu的进程,也就是ps命令查看进程状态为R(Running或Runnable)的进程

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

也就是ps命令查看进程状态为D(Uninterruptible Sleep,也称为 Disk)的进程

    比如,当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,

这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。

     平均负载多少时合理?

   执行以下命令查看cpu 的逻辑个数

   grep 'model name' /proc/cpuinfo | wc -l

   如:               

          

   平均负载是平均进程数,由此可见,平均负载等于cpu 的个数时为最理想状态,说明cpu充分被利用了,

当平均负载大于cpu个数时说明系统已经出现了过载。

  我们要通过平均负载的三个数值来观察系统负载情况趋势,这里我再举个例子,假设我们在一个单 CPU 系统上看到平均负载为

1.73,0.60,7.98,那么说明在过去 1 分钟内,系统有 73% 的超载,而在 15 分钟内,有 698% 的超载,从整体趋势来看,系统

的负载在降低。

 个人认为平均负载超过cpu数量70%时,就应该分析排查负载过高的问题,一旦负载过高,就可能导致系统响应变慢,影响服务正常

运行。

平均负载和cpu使用率的关系

  • cpu密集型进程,使用大量cpu会导致平均负载升高,此时两者是一样的。
  • IO密集型进程,等待IO也会导致平均负载升高,但cpu使用率不一定高。
  • 大量等待cpu 的进程调度也会导致平均负载升高,此时cpu使用率也会升高

平均负载案例分析

   首先安装 stress 和 sysstat 两个工具包

   stress 是linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。

   sysstat  包含了常用的linux性能工具,用来监控和分析系统的性能,如mpstat何pidstat

   mpstat 是一个常用的多核cpu性能分析工具,用来实时查看每个cpu的性能指标,已经所有cpu 的平均指标

   pidstat 是一个常用的进程性能分析工具,用来实时查看进程的cpu、内存、IO以及上下文切换等性能指标

   cpu密集型进程:

猜你喜欢

转载自www.cnblogs.com/huyang0726/p/10403601.html
今日推荐