当前位置 : 主页 > 编程语言 > python >

[Linux学习]平均负载是什么

来源:互联网 收集:自由互联 发布时间:2022-06-18
一 平均负载是什么? 平均负载时的单位时间,是系统处于可运行状态和不可中断情况的平均进程数,总之为平均活跃的进程数。怎么验证这是对的呢。使用man uptime如下图所示。 那么什


一 平均负载是什么?

  • 平均负载时的单位时间,是系统处于可运行状态和不可中断情况的平均进程数,总之为平均活跃的进程数。怎么验证这是对的呢。使用man uptime如下图所示。
  • [Linux学习]平均负载是什么_系统配置

  • 那么什么是不可中断的状态和可运行状态呢
  • 不可中断的状态,顾名思义是这个状态不要打断我,打断我就是搞事情,不如网络一下就不通了。
    可运行状态,也就是这个进程可能是在使用cpu或者在排队等着要使用cpu。

    --不可中断进程

    处于内核态的关键进程。从ps中我们看到的是D状态

    --可运行状态

    正在使用cpu或者正在等待cpu,可以通过ps -ef看到的状态为R状态的进程

    二 平均负载和cpu的关系?

  • 刚才知道了是平均的活跃进程数,那么最理想的是每个cpu刚好占用一个进程,这样子就充分利用了。如果是有两个cpu的情况下。
    • 在只有2个cpu系统上,cpu刚好被完全占用
    • 在4个cpu系统上,那么cpu有一半是空闲的
    • 在1个cpu上,就会出现打架竞争的关系,有一半的进程可能争取不到cpu。
  • 平均负载多少才算合理的呢
  • (1) 先查看有几个cpu

    方法1:top 输出的详细含义后面有介绍

    方法2: cat /proc/cpuinfo /proc是用户态到内核态的桥梁

    方法3:grep 'model name' /proc/cpuinfo | wc -l

    (2) 知道了cpu数,然后通过uptime命令查看平均负载值

    三 在Linux中使用什么工具查看系统负载情况?

  • uptime工具
  • (1) uptime使用
    [Linux学习]平均负载是什么_物理内存_02

    (2) uptime命令输出的参数含义(主要是最后三个参数)
    [Linux学习]平均负载是什么_系统配置_03

  • top工具
  • (1) top使用
    [Linux学习]平均负载是什么_内核态_04

    (2) top命令输出的参数含义
    1)其中第一行包括系统的当前时间(21:49:34),自linux操作系统启动运行以来累计运行时间(0分钟),目前登录到linux操作系统的用户数(1个),以及系统运行在最近1分钟,5分钟和15分钟内系统运行的平均负载。
    2)第二行是关于进程的统计信息,包括系统中现有进程的总数(137),当前正在运行的进程数量(3),处于休眠状态的进程数量(134),处于暂停状态的进程数量(0),处于僵尸状态的进程数量(0)。
    3)第三行是关于CPU的统计信息,CPU处于用户模式(66),CPU处于系统模式(33),CPU处理其优先级经nice值调整过的用户进程的时间量所占百分比(0),CPU处于空闲状态(0),CPU处于等待I/O状态(0.7),CPU处理硬件中断状态(0),CPU处理软件中断状态(0.3),CPU处理st(Steal Time)状态(0)。
    4)第四行是关于内存的统计信息,系统配置的物理内存总量,已用内存数量,空闲内存数量,用作缓冲区的内存数量。
    5)第五行是关于交换区的统计信息,系统配置的交换区总量,已用交换区数量,空闲交换区数量,用作缓冲区的交换区数量。

    四 平均负载和cpu使用率

  • 平均负载高了,就认为cpu使用率高了?
  • 不一定。因为cpu使用(单位时间cpu繁忙程度),包括正在使用cpu的进程和等待cpu和等待io的进程。

    cpu密集:大量进程使用cpu

    io密集:等待io也会导致平均负载升高,但是cpu的使用率不一定高

    五 两个案例

  • 案例1 模拟cpu密集场景
  • (1) 先安装咋们需要的软件包。
    [Linux学习]平均负载是什么_物理内存_05

    (2) 使用xshell打开三个窗口
    第一个窗口:stress --cpu 1 --timeout 600 模拟一个cpu使用100%的场景
    [Linux学习]平均负载是什么_系统配置_06

    第二个窗口:运行uptime查看负载 watch -d uptime(watch可以动态观察命令执行情况)
    [Linux学习]平均负载是什么_内核态_07

    第三个窗口:mpstat查看cpu使用率情况(mpstat -P ALL) 5.监控所有的cpu,5代表的每5秒输出一下结果
    [Linux学习]平均负载是什么_内核态_08

    分析:

    从窗口2可以知道,1分钟的平均负载很快超过了1,但是iowait为0.所以平均负载升高的主要原因应该是cpu使用率为98%所致

    [Linux学习]平均负载是什么_内核态_09

    2 案例2 模拟8个进程
    第一个窗口 模拟IO压力,执行sync stress -c 8 8 --timeout 600
    第二个窗口 uptime

    [Linux学习]平均负载是什么_物理内存_10

    第三个窗口 mpstat查看cpu使用率 midstat -u 5 1

    [Linux学习]平均负载是什么_系统配置_11

    分析:

    一个cpu被8个进程在争抢

    六 总结

    1 可以通过uptime命令查看系统的基本整体性能。
    2 平均负载的结果可能是cpu密集进程导致也可能是IO繁忙导致
    3 学习工具midstat和stress

    上一篇:[Docker系列]2 Docker核心概念
    下一篇:没有了
    网友评论