在本文中,我们将解释Linux系统中最关键的管理任务之一——关于系统/CPU负载(load)和平均负载(Loadaverage)的性能监控。首先,我们来看一下所有类UNIX系统中的两个重要表达式:Systemload/CPUload–衡量Linux系统CPU过载或利用率低的指标,即处于计算状态或等待状态的CPU核数状态。平均负载–在固定时间段(例如1、5、15分钟)内计算的平均系统负载。在Linux中,平均负载一般是指内核运行队列中标记为正在运行或不可中断的进程的平均数量。注意:很少有Linux或类Unix系统不为用户显示负载平均值。完全空闲的Linux系统的平均负载为0,不包括空闲进程。大多数类Unix系统只计算正在运行和等待的进程。但是在linux中,loadaverage还包括处于不间断睡眠状态的进程——等待磁盘I/O等其他系统资源的进程如何监控linux系统的平均负载监控average的方法有很多种系统的负载,比如uptime,会显示系统运行时间,用户数和平均负载:$uptime07:13:53up8days,19min,1user,loadaverage:1.98,2.15,2.21averageload的含义从左到右依次为:最近1分钟的平均负载为1.98最近5分钟的平均负载为2.15最近15分钟的平均负载为2.21平均负载高表示系统过载:许多进程都在等待CPU时间。下一节将介绍loadaverage和CPU核数的关系。另外常用工具top和glances可以实时显示Linux系统的运行状态:Top命令$top显示正在运行的Linux进程:top-12:51:42up2:11,1user,loadaverage:1.22,1.12,1.26Tasks:243total,1running,242sleeping,0stopped,0zombie%Cpu(s):17.4us,2.9sy,0.3ni,74.8id,4.6wa,0.0hi,0.0si,0.0stKiBMem:8069036total,388060free,4381184used,3299792buff/cache90totalKi6wap:363901876free,4680used.2807464availMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND6265tecmint200124434817068083616S13.32.16:47.72Headset2301tecmint9-11640332133449932S6.70.22:18.96pulseaudio2459tecmint200170769231562862992S6.73.96:55.45cinnamon2957tecmint20026446441.035g137968S6.713.550:11.13firefox3208tecmint2005070605213633152S6.70.60:04.34gnome-terminal-3272tecmint2001521380391324178348S6.74.86:21.01chrome6220tecmint200159539210696476836S6。71.33:31.94headSet1Root20012005662043964S0.00.10:01.83Systemd2200000S0.00.00.00:00.00.00kthreadd3root200000S0.00.00.00.00.00.00.00:00.10KSOFTIRIANCEux系统监控工具:TecMint(LinuxMint1864bit/Linux4.4.0-21-generic)Uptime:2:16:06CPU16.4%nice:0.1%LOAD4-coreMEM60.5%active:4.90GSWAP0.1%user:10.2%irq:0.0%1min:1.20total:7.70Ginactive:2.07Gtotal:3.73Gsystem:3.4%iowait:2.7%5min:1.16used:4.66Gbuffers:242Mused:4.57Midle:83.6%steal:0.0%15min:1.24free:3.04Gcached:2.58Gfree:3.72GNETWORKRx/sTx/sTASKS253(883thr),1run,252slp,0othsortedautomaticallybycpu_percent,flatviewenp1s0525Kb31Kblo2Kb2KbCPU%MEM%VIRTRESPIDUSERNISTIME+IOR/sIOW/sCommandwlp2s00b0b14.613.32.53G1.03G2957tecmint0S51:49.10040K/usr/lib/firefox/firefox7.42.21.16G176M6265tecmint0S7:08.1800/usr/lib/Headset/Headset--type=renderer--no-sandbox--primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF--lanDISKI/OR/sW/s4.93.91.63G310M2459tecmint0R7:12.20-1800recinna20M13.0M2301tecmint-11S2:29.7200/usr/bin/pulseaudio--start--log-target=sysloggram1004.21.31.52G105M6220tecmint0S3:42.6400/usr/lib/Headset/Headsetram10002.90.8409M66.7M6240:4tecmint0.4400/usr/lib/Headset/Headset--type=gpu-process--no-sandbox--supports-dual-gpus=false--gpu-driver-bug-workarounds=7,2ram11002.91.8531M142M1690root0S6:03.7900/usr/lib/xorg/Xorg:0-audit0-auth/var/lib/mdm/:0.Xauth-nolistentcpvt8ram12002.60.379.3M23.8M9651tecmint0R0:00.7100/usr/bin/python3/usr/bin/glancesram13001.64.81.45G382M327S0642tecmintk/opt/google/chrome/chrome...这些工具中的平均负载是从/proc/loadavg文件中读取的,也可以直接使用cat命令查看:$cat/proc/loadavg2.481.691.425/88910570以图形方式监控平均负载,请戳:ttyload-在终端中显示Linux平均负载的彩色编码图在台式机上,您可以使用GUI工具查看系统平均负载。了解平均系统负载与CPU核心数的关系,为了解释系统负载,考虑到CPU核心数的影响。多处理器与多核处理器多处理器–两个或多个物理CPU集成到计算机系统中多核处理器–单个物理CPU具有两个或多个并行工作的独立内核(也称为处理单元)。双核意味着两个处理单元,四核有4个处理单元,依此类推。此外,英特尔还引入了超线程技术来提高并行计算能力。使用超线程,单个物理CPU对操作系统来说就像两个逻辑CPU。(实际上硬件上只有一个CPU)。注意单个CPU核一次只能执行一个任务,于是产生了multi-CPU/processor、多核CPU、多线程技术。使用多个CPU,可以同时执行多个程序。今天的英特尔CPU使用多核和超线程技术。您可以使用nproc或lscpu命令查看系统中处理器单元的数量。$nproc4#或lscpu也可以使用grep命令:$grep'modelname'/proc/cpuinfo|wc-l4为了进一步了解系统负载,需要做一些假设。假设系统负载如下:23:16:49up10:49,5user,loadaverage:1.00,0.40,3.35表示在单核系统中:CPU被充分利用(100%);最后1分钟内有1个进程正在运行。60%的CPU空闲;在过去5分钟内没有进程等待CPU时间。CPU平均超载235%;最后15分钟平均有2.35个进程在等待CPU时间。在双核系统中意味着:有一个CPU完全闲置,另一个被使用;在过去的1分钟内没有进程等待CPU时间。CPU平均空闲160%;在过去的5分钟内没有进程等待CPU时间。CPU平均超载135%;1.35个进程在最近15分钟内一直在等待CPU时间。或许你还会喜欢:20个监控系统性能的命令行工具(一)13个Linux性能监控工具(二)Perf:Linux上的性能监控分析工具使用Nmon监控Linux系统性能总而言之,如果你是作为系统管理员,您应该关注高负载平均值。loadaverage高于CPUcores意味着CPU需要增加,反之则意味着CPU未被充分利用。
