[转帖]Linux性能分析:理解系统平均负载

linux,性能,分析,理解,系统,平均,负载 · 浏览次数 : 0

小编点评

**Linux系统平均负载** 平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。 **CPU使用率** CPU使用率是指单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。 **监测系统平均负载** * **uptime** 命令:显示系统运行时间、用户数量及平均负载。 * **top** 命令:实时显示Linux系统的运行状态,包括CPU使用率。 ** CPU使用率与平均负载的关系** * 平均负载越高,CPU使用率越高。 * CPU使用率越高,意味着CPU占用资源的越高。 ** 平均负载案例分析** * 使用**stress**工具模拟CPU使用率100%场景。 * 使用**top** 命令实时查看CPU使用率。 * 使用**mpstat** 命令监控CPU使用率的变化。

正文

Linux系统中,平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。它不仅包括了正在使用CPU的进程,也包括处于不可打断的睡眠状态的进程—它们是在等待其它系统资源如磁盘 I/O 等的进程。而CPU使用率,是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。
有诸多方式监测系统平均负载,比如最常用的uptimetop工具:

uptime命令

uptime会显示系统运行时间、用户数量及平均负载:

$ uptime
 20:53:21 up  2:19,  3 users,  load average: 0.07, 0.02, 0.00

    平均负载的数字从左到右的含义依次为:

    • 最近 1 分钟的平均负载为 0.07
    • 最近 5 分钟的平均负载为 0.02
    • 最近 15 分钟的平均负载为 0.00

    top命令

    top命令可以实时的显示Linux系统的运行状态:

    $ top
    

      下面是系统进程状态的显示:

      top - 21:01:32 up  2:27,  2 users,  load average: 0.03, 0.02, 0.00
      Tasks: 261 total,   1 running, 190 sleeping,   0 stopped,   0 zombie
      %Cpu(s):  1.0 us,  1.5 sy,  0.0 ni, 97.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
      KiB Mem :  8144440 total,  5453688 free,   939500 used,  1751252 buff/cache
      KiB Swap:  7810044 total,  7810044 free,        0 used.  6794636 avail Mem 
      

      PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
      5834 f1dev 20 0 610168 107712 78048 S 1.7 1.3 0:04.87 chrome
      2150 f1dev 20 0 1190912 116464 81708 S 1.0 1.4 0:14.88 compiz
      5801 f1dev 20 0 771976 158536 113124 S 1.0 1.9 0:07.18 chrome

        第一行的队列信息和uptime命令的输出完全一致。

        系统平均负载和CPU核心数的关系

        可以使用nproclscpu或者grep命令查看系统中的处理器数量:

        $ nproc
        2
        或者
        $ lscpu
        或者
        $ grep 'model name' /proc/cpuinfo | wc -l
        2
        

          假设系统负载如下:

          $ uptime
           20:53:21 up  2:19,  3 users,  load average: 1.00, 0.40, 3.35
          

            如果一个单CPU系统上表示在过去一分钟内系统刚好满载运行;在5分钟内CPU有 60%处于空闲状态;而在15分钟内,有235%的超载。
            如果是在一个双核系统中表示在过去一分钟内系统有一个CPU处于完全空闲状态,另一个CPU被使用;在5分钟内,CPU平均160% 处于空闲状态;而在15分钟内,有135%的超载,也就是说最近的 15 分钟平均有1.35个进程等待CPU时间。

            平均负载案例分析

            首先安装stresssysstat工具:

            # stress:一个Linux系统压力测试工具。
            # sysstat:监控和分析系统的性能工具,包括mpstat(cpu详细信息)、pidstat(进程性能分析)命令、iostat等。
            $ sudo apt install stress sysstat
            

              同一个Linux系统打开三个终端,在第一终端模拟CPU使用率100%场景:

              $ stress --cpu 1 --timeout 600
              stress: info: [6684] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
              

                第二个终端运行uptime

                # -d 参数表示高亮显示变化的区域
                $ watch -d uptime
                21:40:12 up  3:06,  4 users,  load average: 1.00, 0.50, 0.20
                

                  在第三个终端运行 mpstat 查看 CPU 使用率的变化:

                  # -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
                  $ mpstat -P ALL 5
                  21时40分01秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
                  21时40分06秒  all   50.45    0.30    0.50    0.00    0.00    0.00    0.00    0.00    0.00   48.75
                  21时40分06秒    0   100.00    0.60    0.60    0.00    0.00    0.00    0.00    0.00    0.00    4.40
                  21时40分06秒    1    6.02    0.00    0.60    0.00    0.00    0.00    0.00    0.00    0.00   93.37
                  

                    从终端二看到1分钟的平均负载会慢慢增加到1.00;终端三正好有一个CPU使用率为100%,但它的iowait只有0,说明平均负载的升高正是由于CPU使用率的升高。
                    那么到底是哪个进程导致CPU使用率为100%,可以使用top命令来或使用pidstat命令来查看:

                    # 间隔 5 秒后输出一组数据
                    $ pidstat -u 5 1
                    Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
                    Average:     1000      6685   100.00    0.00    0.00   99.60     -  stress
                    

                      从这里可以明显看到,stress 进程的 CPU 使用率为 100%。

                      文章知识点与官方知识档案匹配,可进一步学习相关知识
                      CS入门技能树Linux入门初识Linux31175 人正在系统学习中

                      与[转帖]Linux性能分析:理解系统平均负载相似的内容:

                      [转帖]Linux性能分析:理解系统平均负载

                      Linux系统中,平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。它不仅包括了正在使用CPU的进程,也包括处于不可打断的睡眠状态的进程—它们是在等待其它系统资源如磁盘 I/O 等的进程。而CPU使用率,是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。 有诸多方式监测系统平

                      [转帖]Linux性能分析(二):理解CPU上下文切换

                      在计算机中,上下文切换是指存储进程或线程的状态,以便以后可以还原它并从同一点恢复执行。这允许多个进程共享一个CPU,这是多任务操作系统的基本功能。 Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行,这依赖于CPU上下文切换。CPU 上下文切换,就是先把前一个任务的 CPU

                      [转帖]Linux性能调优之内存负载调优的一些笔记

                      https://zhuanlan.zhihu.com/p/548770928 写在前面 整理一些Linux内存调优的笔记,分享给小伙伴 博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门 博文内容涉及: Linux内存管理的基本理论 寻找内存泄露的进程 内存交换空间调优 不同方式的内存回收

                      [转帖]linux 性能分析工具 perf + FlameGraph

                      https://www.cnblogs.com/lausaa/p/12098716.html 常用命令: perf record -e cpu-clock -g -p $pid sleep 10 perf script -i perf.data > perf.unfold /FlameGraph-m

                      [转帖]Linux性能优化(十)——CPU性能分析工具

                      Linux性能优化(十)——CPU性能分析工具 https://blog.51cto.com/u_9291927/2594169 一、CPU性能指标 1、CPU使用率 CPU使用率是最常见的一个性能指标,描述了非空闲时间占总CPU 时间的百分比,根据CPU上运行任务的不同,分为用户CPU、系统CPU

                      [转帖]Linux性能优化实战 —— CPU

                      https://www.jianshu.com/p/2b6658ad59b3 Linux性能分析概要 1. 性能指标 linux性能指标.png 随着应用负载的增加,系统资源的使用也会升高,甚至达到极限。而性能问题的本质,就是系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求。性能分析

                      [转帖]Linux性能优化(五)——性能监控工具

                      原文 https://blog.51cto.com/9291927/2594065 1、性能分析工具简介 Brendan Gregg是算机性能设计、分析和调优专家,编写开源大量性能测试工具。http://www.brendangregg.comnode 一、性能分析工具 二、性能观测工具 三、性能测

                      [转帖]Linux性能优化(四)——BCC性能监控工具

                      一、BCC简介 1、BCC简介 BCC是一个Python库,简化了eBPF应用的开发过程,并收集了大量性能分析相关的eBPF应用。BCC为BPF开发提供了不同的前端支持,包括Python和Lua,实现了map创建、代码编译、解析、注入等操作,使开发人员只需聚焦于用C语言开发要注入的内核代码。 BCC

                      [转帖]Linux性能优化(四)——BCC性能监控工具

                      原文 https://blog.51cto.com/9291927/2593705 1、BCC简介 一、BCC简介 BCC是一个Python库,简化了eBPF应用的开发过程,并收集了大量性能分析相关的eBPF应用。BCC为BPF开发提供了不一样的前端支持,包括Python和Lua,实现了map建立、

                      [转帖]Linux性能调优工具-9张图-包你用到爽!抓紧收藏吧

                      这里包含Linux 性能资料的工具图。这些使用大字体可以用作海报幻灯片。也可以将它们打印出来贴在办公室墙上。它们展示了:Linux 可观察性工具、 Linux 静态性能分析工具、 Linux 基准测试工具、 Linux 调优工具和Linux sar。 性能观察工具: 静态性能工具 性能压测工具: 性