在本文中,我们将解释 Linux 系统中最关键的管理任务之一——关于系统 / CPU 的负载(load)和平均负载(Load average)的性能监控。

首先来看所有的类 UNIX 系统中两个重要的表述:

系统负载 / CPU 负载 – 衡量 Linux 系统的 CPU 过载或利用率低的指标,即处于运算状态或等待状态的 CPU 核心数。

平均负载 – 通过固定的时间周期如 1、5、15 分钟计算出的平均的系统负载。

Linux 中,平均负载一般指在内核运行队列中被标记为运行或不可打断状态的进程的平均数。

注意:

几乎没有 Linux 或类 Unix 系统不为用户展示平均负载的值。

完全空闲的 Linux 系统平均负载为 0,不包括空闲进程。

绝大多数类 Unix 系统只统计运行和等待状态的进程。但是在 Linux 中,平均负载也包括处于不可打断的睡眠状态的进程——它们是在等待其它系统资源如磁盘 I/O 等的进程。

如何监测 Linux 系统平均负载

有诸多方式监测系统平均负载,如 uptime,它会展示系统运行时间、用户数量及平均负载:

$uptime

07:13:53up8days,19min,1user,load average:1.98,2.15,2.21

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

最近 1 分钟的平均负载为 1.98

最近 5 分钟的平均负载为 2.15

最近 15 分钟的平均负载为 2.21

高平均负载意味着系统是过载的:许多进程在等待 CPU 时间。

下一节将介绍平均负载和 CPU 核数的关系。此外,常用的工具 top 和 glances 可以实时显示 Linux 系统的运行状态:

Top命令

$top

显示运行中的Linux进程:

top-12:51:42up2:11,1user,load average:1.22,1.12,1.26

Tasks:243total,1running,242sleeping,0stopped,0zombie

%Cpu(s):17.4us,2.9sy,0.3ni,74.8id,4.6wa,0.0hi,0.0si,0.0st

KiBMem:8069036total,388060free,4381184used,3299792buff/cache

KiBSwap:3906556total,3901876free,4680used.2807464availMem

PID USER PR NI VIRT RES SHR S%CPU%MEM TIME+COMMAND

6265tecmint200124434817068083616S13.32.16:47.72Headset

2301tecmint9-11640332133449932S6.70.22:18.96pulseaudio

2459tecmint200170769231562862992S6.73.96:55.45cinnamon

2957tecmint20026446441.035g137968S6.713.550:11.13firefox

3208tecmint2005070605213633152S6.70.60:04.34gnome-terminal-

3272tecmint2001521380391324178348S6.74.86:21.01chrome

6220tecmint200159539210696476836S6.71.33:31.94Headset

1root20012005662043964S0.00.10:01.83systemd

2root200000S0.00.00:00.00kthreadd

3root200000S0.00.00:00.10ksoftirqd/0

5root0-20000S0.00.00:00.00kworker/0:0H

....

Glances 工具

$ glances

Glances – Linux系统监测工具:

TecMint(LinuxMint1864bit/Linux4.4.0-21-generic)Uptime:2:16:06

CPU16.4%nice:0.1%LOAD4-core MEM60.5%active:4.90GSWAP0.1%

user:10.2%irq:0.0%1min:1.20total:7.70Ginactive:2.07Gtotal:3.73G

system:3.4%iowait:2.7%5min:1.16used:4.66Gbuffers:242Mused:4.57M

idle:83.6%steal:0.0%15min:1.24free:3.04Gcached:2.58Gfree:3.72G

NETWORKRx/sTx/s TASKS253(883thr),1run,252slp,0oth sorted automatically by cpu_percent,flat view

enp1s0525Kb31Kb

lo2Kb2KbCPU%MEM%VIRT RES PID USER NI S TIME+IOR/s IOW/sCommand

wlp2s00b0b14.613.32.53G1.03G2957tecmint0S51:49.10040K/usr/lib/firefox/firefox

7.42.21.16G176M6265tecmint0S7:08.1800/usr/lib/Headset/Headset--type=renderer--no-sandbox--primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF--lan

DISK I/O R/s W/s4.93.91.63G310M2459tecmint0R7:12.1800cinnamon--replace

ram0004.20.2625M13.0M2301tecmint-11S2:29.7200/usr/bin/pulseaudio--start--log-target=syslog

ram1004.21.31.52G105M6220tecmint0S3:42.6400/usr/lib/Headset/Headset

ram10002.90.8409M66.7M6240tecmint0S2:40.4400/usr/lib/Headset/Headset--type=gpu-process--no-sandbox--supports-dual-gpus=false--gpu-driver-bug-workarounds=7,2

ram11002.91.8531M142M1690root0S6:03.7900/usr/lib/xorg/Xorg:0-audit0-auth/var/lib/mdm/:0.Xauth-nolisten tcp vt8

ram12002.60.379.3M23.8M9651tecmint0R0:00.7100/usr/bin/python3/usr/bin/glances

ram13001.64.81.45G382M3272tecmint0S6:25.3004K/opt/google/chrome/chrome

...

这些工具中的平均负载是从 /proc/loadavg 文件中读取的,也可以直接使用 cat 命令查看:

$cat/proc/loadavg

2.481.691.425/88910570

在桌面计算机中,可以使用图形用户接口工具查看系统平均负载。

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

考虑了 CPU 核心数的影响,才能解释系统负载。

多处理器 Vs 多核处理器

多处理器 – 一个计算机系统中集成两个或多个物理 CPU

多核处理器 – 单个物理 CPU 有两个或多个单独的核并行工作(也叫处理单元)。双核意味着有两个处理单元,4 核有 4 个处理单元,以此类推。

此外,Intel 引入了超线程技术用来提高并行计算能力。

通过超线程技术,在操作系统中,单个物理 CPU 表现的和两个逻辑 CPU 一样。(实际在硬件上只有一个 CPU)。

注意,单个 CPU 核同一时间只能执行一个任务,于是产生了多 CPU/处理器、多核 CPU,以及多线程技术。

多 CPU 时,多个程序可以同时执行。如今的 Intel CPU 使用了多核心和超线程技术。

可以使用 nproc 或 lscpu 命令查看系统中的处理器单元数量。

$ nproc

4

#或者

lscpu

也可以使用 grep 命令:

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

4

为了进一步理解系统负载,需要做一些假设。假设系统负载如下:

23:16:49up10:49,5user,load average:1.00,0.40,3.35

在单核系统中意味着:

CPU 被充分利用(100%);最近的 1 分钟有 1 个进程在运行。

CPU 有 60% 处于空闲状态;在最近的 5 分钟没有进程等待 CPU 时间。

CPU 平均过载了 235%;最近的 15 分钟平均有 2.35 个进程在等待 CPU 时间。

在双核系统中意味着:

有一个 CPU 处于完全空闲状态,另一个 CPU 被使用;最近的 1 分钟没有进程等待 CPU 时间。

CPU 平均 160% 处于空闲状态;最近的 5 分钟没有进程等待 CPU 时间。

CPU 平均过载了 135%;最近的 15 分钟有 1.35 个进程等待 CPU 时间。

总而言之,如果你是系统管理员,你应该关注高的平均负载。平均负载高于 CPU 核心数意味着需要增加 CPU,反之则意味着 CPU 未被充分利用。

作者简介:

Aaron Kili 是 Linux 和自由软件的热心者,热衷于分享知识,现在是 TecMint 网站的内容创作者,不久之后将成为 Linux 系统管理员,web 开发者。

本文由 LCTT 原创编译,Linux中国 荣誉推出

linux负载监控工具,理解 Linux 的平均负载和性能监控相关推荐

  1. linux php cpu,理解Linux CPU负载和 CPU使用率

    CPU负载和 CPU使用率 这两个从一定程度上都可以反映一台机器的繁忙程度. cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进入w ...

  2. 【Linux】uptime命令详解平均负载

    命令 ➜ ~ uptime 22:37 up 90 days, 21:45, 2 users, load averages: 2.91 3.46 3.81 具体含义 22:37:代表的是当前的系统时间 ...

  3. linux load average,理解Linux中的Load Average

    在Linux系统中,使用下面的命令: top w uptime (以上三个命令各有区别,top是以固定间隔显示进程的资源占用排名,w显示who and what they are doing,upti ...

  4. linux 串口驱动 理解,linux 串口驱动 理解

    linux 串口 驱动 理解 一.核心数据结构 串口驱动有3个核心数据结构,它们都定义在 1.uart_driver uart_driver包含了串口设备名.串口驱动名.主次设备号.串口控制台(可选) ...

  5. linux僵尸进程理解,Linux为什么要设计一个“僵尸进程”状态?

    评论 # re: Linux为什么要设计一个"僵尸进程"状态? 2011-05-24 12:34 nevergone 因为linus是僵尸:-(  回复  更多评论 # re: L ...

  6. c语言 linux sd_深入理解Linux C语言内存管理

    问题不能拖,我这就来学习一下吧,争取一次搞定. 在任何程序设计环境及语言中,内存管理都十分重要. 内存管理的基本概念 分析C语言内存的分布先从Linux下可执行的C程序入手.现在有一个简单的C源程序h ...

  7. linux僵尸进程理解,Linux僵尸进程详细解析

    在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为 ...

  8. 理解Linux和其他UNIX-Like系统上的平均负载

    理解Linux和其他UNIX-Like系统上的平均负载      Linux,Mac以及其他UNIX-like系统都能显示出"load average"信息.这些数字告诉你,你系统 ...

  9. 怎么理解linux的平均负载及平均负载高后的排查工具

    什么是平均负载 平均负载可以对于我们来说及熟悉又陌生,但我们问平均负载是什么,但大部分人都回答说平均负载不就是单位时间内CPU使用率吗?其实并不是这样的,如果可以的话,可以 man uptime 来了 ...

最新文章

  1. Maven学习总结(6)——Maven与Eclipse整合
  2. 20行python代码的入门级小游戏-200行Python代码实现的2048小游戏
  3. 完善vim bccalc_linux插件
  4. 分享三个非常适合新手的网站
  5. 了解自己计算机硬件设备信息
  6. python中turtle画圆填充颜色_Python之turtle绘图
  7. python机器学习库xgboost使用调参
  8. java语言程序设计(梁勇)
  9. 2021年最好用&完全免费的图片压缩网站、软件推荐(包括GIF)
  10. bootbox.confirm 官方例子 网址
  11. Unity使用Animator.CrossFade后,脚本的OnExitState函数还执行吗
  12. Java基础 - 替罪羊树(Scapegoat Tree)
  13. PHP工程师历年企业笔试真题汇总
  14. SQL脚本得到Epicor客制化信息
  15. 华为云k8s环境部署应用
  16. dz程序上传服务器的位置,dz手机端上传到远程服务器
  17. 水安ABC考试多选练习题库
  18. ps2022自学教程:使用Photoshop Mac软件创建动画和音频
  19. 远程桌面协议(RDP)工具 FreeRDP
  20. SV绿皮书笔记(六)

热门文章

  1. ashx需要编译吗_ASP.NET运行机制之一般处理程序(ashx)
  2. ROS系统学习2---ROS最小系统的制作
  3. 欧几里得,扩展欧几里得,孙子定理
  4. 解密清朝兴衰的风水龙脉
  5. SVM 原理详细推导
  6. 如何使用baostock代码下载股票数据?
  7. 卡塔尔世界杯 A组第一场第一球进球无效判罚越位犯规是没有问题的,大家可以参考一下
  8. 鸿蒙三界巅峰实力最强大生物,三界最厉害的五位大神,简直太厉害,基本没有天敌!...
  9. 防止Android截屏
  10. Adobe Illustrator作图