[转帖]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
                  214001秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
                  214006秒  all   50.45    0.30    0.50    0.00    0.00    0.00    0.00    0.00    0.00   48.75
                  2140060   100.00    0.60    0.60    0.00    0.00    0.00    0.00    0.00    0.00    4.40
                  2140061    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。 性能观察工具: 静态性能工具 性能压测工具: 性