首页 > 系统相关 >【运维必备知识】Linux系统平均负载与top、uptime命令详解

【运维必备知识】Linux系统平均负载与top、uptime命令详解

时间:2024-06-09 12:33:12浏览次数:35  
标签:负载 运维 0.0 top 系统 uptime Linux 进程 CPU

【运维必备知识】Linux系统平均负载与top、uptime命令详解

大家好,我是秋意零

工作中,服务出现问题如何排查Linux系统侧。首先第一想到应该排查是否是负载过高导致的。

今天,这篇就来看看,top、uptime命令中平均负载(load average)相关内容,初学者应该关注都比较少(也包括我。。)

top命令解析

top 实时显示系统运行状态

top命令的功能是实时显示系统运行状态,包含处理器、内存、服务、进程等重要资产信息。运维工程师们常常会把top命令比作“加强版的Windows任务管理器”,因为除了能看到常规的服务进程信息之外,还能够对处理器和内存的负载情况一目了然,实时感知系统全局的运行状态。

$ top
top - 20:35:30 up 123 days,  6:28,  2 users,  load average: 0.02, 0.01, 0.00
Tasks: 132 total,   1 running, 131 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.5 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.2 hi,  0.0 si,  0.0 st
MiB Mem :   1889.0 total,    265.7 free,    948.8 used,    674.5 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    742.6 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    788 root      20   0  474984  19280   2008 S   0.3   1.0 284:35.41 tuned
 744079 root      20   0   16992   5352   3752 S   0.3   0.3   0:00.26 sshd
 745499 root      20   0  227200   4640   3988 R   0.3   0.2   0:00.01 top

注意:下列相关重要参数,都有标记重要二字

第一行:top - 20:35:30 up 123 days, 6:28, 2 users, load average: 0.02, 0.01, 0.00

参数解释
时钟、系统运行时间:top - 20:35:30 up 123 days, 6:28时钟:top - 20:35:30 表示当前时间是20小时35分钟30秒
系统运行时间:up 123 days, 6:28 意味着系统已经连续运行了123天6小时28分钟
登录用户数:2 users当前有2个用户登录
负载平均值(重要):load average: 0.02, 0.01, 0.00分别是过去1分钟、5分钟和15分钟的系统负载平均值,数值都很低,表明系统目前很空闲

第二行:Tasks: 132 total, 1 running, 131 sleeping, 0 stopped, 0 zombie

参数解释
任务总数:Tasks: 132 total
进程状态(重要):1 running, 131 sleeping, 0 stopped, 0 zombie分别表示正在运行、休眠、停止和僵尸状态的进程数。

第三行:%Cpu(s): 0.5 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.2 hi, 0.0 si, 0.0 st

参数解释
CPU使用率:%Cpu(s): 0.5 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.2 hi, 0.0 si, 0.0 stus: 用户CPU时间百分比,表示用户态进程消耗的CPU时间
sy: 系统CPU时间百分比,表示内核态消耗的CPU时间
ni: nice值,调整过的用户CPU时间百分比
id: 空闲CPU时间百分比(重要)
wa: 等待I/O完成的CPU时间百分比
hi: 硬中断时间百分比
si: 软中断时间百分比
st: 被虚拟机偷走的CPU时间百分比(如果在虚拟化环境中)

第四行:MiB Mem : 1889.0 total, 265.7 free, 948.8 used, 674.5 buff/cache

参数解释
总内存:1889.0 total系统总内存为1889MB
可用内存:265.7 free直接可用内存为265.7MB
已用内存:948.8 used已分配给进程的内存948.8MB
缓冲/缓存内存:674.5 buff/cache系统用于缓冲和缓存的内存674.5MB

第五行:不做解释,和第四行差不多

第六行:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

参数解释
PID进程ID
USER运行该进程的用户
RP优先级
NInice值,影响进程调度的优先级
VIRT虚拟内存大小
RES常驻内存大小,即实际占用的物理内存大小
SHR共享内存大小
S(重要)进程状态
%CPU该进程占用的CPU百分比
%MEM该进程占用的物理内存百分比
TIME+进程运行的累积CPU时间。如:284:35.41,284分钟35.41秒
COMMAND(重要)进程启动命令名称

进程状态

进程状态解释
R(running)正在运行或就绪状态。进程要么正在使用CPU,要么等待CPU分配时间片以继续执行。R+表示前台运行的进程。
S(sleeping)休眠状态。进程正在等待某个事件发生(如定时器、I/O完成、信号等),此时不会被分配CPU时间。
D(disk sleep)不同于S状态,特指进程正在等待I/O操作完成,尤其是磁盘I/O。在一些系统中,这可能与S状态一同显示为"DS"或"S+"。
T(stopped)停止状态。进程被暂停执行,通常是因为接收到SIGSTOP、SIGTSTP等信号。可以通过SIGCONT信号恢复运行。
t (tracing stop)跟踪停止状态。与T状态类似,但通常是因为被调试器(如gdb)所控制。
X(dead)死亡状态。进程即将被删除,这是一个非常短暂的状态,通常很快就会变为Z状态。
Z(zombie)僵尸状态。子进程已经终止,但父进程尚未通过wait()waitpid()系统调用来收集其终止状态。僵尸进程不占用系统资源,除了少量内核表项。

详细进程相关内容可参考:【Linux】进程的七大状态详解!

相关指令(CPU、平均负载)

# 查看系统负载(或top命令)
[root@blog ~]# uptime
 23:28:48 up 123 days,  9:22,  2 users,  load average: 0.04, 0.05, 0.00
 
# 显示CPU架构信息,可看CPU核心数
[root@blog ~]# lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2   # 核心数
On-line CPU(s) list: 0,1
...
...

# 查看CPU详细信息
[root@blog ~]# cat /proc/cpuinfo

相关面试题

1、如何判断top或者uptime命令中平均负载(load average)过高?

1)判断标准

可以通过对比系统的平均负载值和CPU核心数量来进行评估。如,如果系统有4个CPU核心,则每个核心对应1个负载单位

  • 平均负载值 < CPU核心数量:系统负载正常,CPU有足够的资源处理当前任务。例如,4核系统的平均负载值在0-2之间,表明系统负载较低。
  • 平均负载值 ≈ CPU核心数量:系统负载较高,CPU资源接近饱和状态,但仍能处理当前任务。例如,4核系统的平均负载值在3-4之间,表明系统负载较高,但仍在可接受范围内。
  • 平均负载值 > CPU核心数量:系统负载过高,CPU资源不足,大量任务在等待处理,可能导致系统性能下降。例如,4核系统的平均负载值超过4,特别是超过6或更高时,表明系统负载过高,CPU资源不足,大量任务在等待处理。

2)实际应用中的示例

  • 低负载系统:一台4核服务器的负载值为 0.5, 0.7, 0.6,表示系统负载较低,CPU有充足的资源应对任务。
  • 中等负载系统:一台4核服务器的负载值为 3.5, 3.8, 3.6,表示系统负载较高,但仍在可接受范围内,CPU资源接近饱和。
  • 高负载系统:一台4核服务器的负载值为 6.0, 7.5, 8.0,表示系统负载过高,大量任务在等待处理,可能导致系统响应变慢或出现性能问题。

3)综合判断

有可能出现CPU使用率很低,但是负载却很高的情况,因为网络或者磁盘I/O很慢(传输工作负载),而CPU需要等待工作负载过来对其进行处理,导致CPU使用率很低。

PS:工作负载就是进程队列

所以除了平均负载值外,还应该结合其他性能指标来综合判断系统是否过载:

  • CPU使用率:查看各个核心的使用率,判断CPU是否处于高负载状态。
  • 内存使用情况:通过free命令或其他工具检查内存和交换区的使用情况,判断是否有内存瓶颈。
  • 磁盘I/O性能:使用iostatiotop工具检查磁盘读写性能,判断是否存在I/O瓶颈。
  • 网络性能:通过netstatiftop查看网络流量和连接情况,判断是否存在网络瓶颈。

2、top 命令可以看到一个平均负载的指标,这个平均负载指的是什么

平均负载表示系统在特定时间段内(1分钟、5分钟、15分钟)运行队列中的进程数量的平均值。这包括正在运行的、等待运行的,以及等待某些资源(如I/O操作)完成的进程。

3、top 命令里这个平均负载,它跟CPU使用率有啥区别

区别:

  • 平均负载是进程队列
  • CPU使用率是处理负载的繁忙程度

场景:有可能出现CPU使用率很低,但是负载却很高的情况。因为网络或者磁盘I/O很慢(传输工作负载),而CPU需要等待工作负载过来对其进行处理,导致CPU使用率很低。

4、top 命令中,进程的状态有,并说出英文缩写?

7种状态:运行状态 R(running)、休眠状态 S(sleeping)、等待磁盘I/O状态 D(disk sleep)、停止状态 T(stopped)、跟踪状态 t(tracing stop)、死亡状态 X(dead)、僵尸状态 Z(zombie)

参考

一分钟彻底搞清CPU使用率和工作负载(load average)的含义

Linux系统负载含义

CPU使用率过高问题排查及Linux之top命令用法详解

标签:负载,运维,0.0,top,系统,uptime,Linux,进程,CPU
From: https://blog.csdn.net/qq_48450494/article/details/139560360

相关文章

  • FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
    ​XviD是个开源的视频编解码器,它与DivX一同被纳入MPEG-4规范第二部分的视频标准,但DivX并未开源。早期的MP4视频大多采用XviD或者DivX编码,当时的视频格式被称作MPEG-4。现在常见的H.264后来才增补到MPEG-4规范的第十部分,当然如今使用XviD压缩的视频已经不多了。在《FFmpeg开发实战......
  • pxe批量部署linux介绍
    1、PXE批量部署的作用及必要性: 1)智能实现操作系统的批量安装(无人值守安装) 2)减少管理员工作,提高工作效率 3)可以定制操作系统的安装流程 a.标准流程定制(ks.cfg) b.自定义流程定制(ks.cfg(%post))2、通过dhcp+tftp+nfs/http/ftp+kickstart(ks.cfg)+DNS1、客户......
  • Linux:基本指令
    文章目录ls指令pwd指令cd指令touch指令mkdir指令rmdir指令&&rm指令cp指令man指令echo指令输出重定向追加重定向cat指令输入重定向mv指令which指令alias指令more&&less指令head&&tail指令事件相关的指令date显示时间戳cal指令find指令grep指令zip&&unzip指令ta......
  • Linux -- 简单的文本处理
    提示:制作不易,可以点个收藏和关注哦。前言 这一节我们将介绍这几个命令 tr(注意不是tar),col,join,paste。实际这一节是上一节关于能实现管道操作的命令的延续,所以我们依然将结合管道来熟悉这些文本处理命令的使用。提示:以下是本篇文章正文内容,下面案例可供参考.一、tr命......
  • Linux -- 正则表达式基础
    提示:制作不易,可以点个关注和收藏哦。前言        虽然我们这一节的标题是正则表达式,但实际这一节实验只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式)。正则表达式本身的内容很多,要把它说明清楚需要单独一门......
  • linux脚本编写备忘
    linux脚本编写备忘1、linux脚本的回车换行符最好用unix格式的。否则某些系统下运行会出错,例如veket18中必须要求是LF格式。Unix系统(包括Linux和macOS):使用LF(LineFeed,\n)字符作为行结束符。在ASCII码表中,LF字符的十进制表示为10。Windows系统:使用CRLF(Carriage......
  • Linux服务器配置一个简单的DNS
    配置一个简单的DNS服务器可以使用BIND (BerkeleyInternetNameDomain)。配置DNS的步骤如下一、安装BINDsudoapt-updatesudoapt-getinstallbind9二、配置BIND。编辑 /etc/bind/named.conf.local 文件,添加一个简单的zone配置zone"example.com"{  typemas......
  • Linux内核链表源代码
    /*SPDX-License-Identifier:GPL-2.0*/#ifndef_LINUX_LIST_H#define_LINUX_LIST_H#include<linux/types.h>#include<linux/stddef.h>#include<linux/poison.h>#include<linux/const.h>#include<linux/kernel.h>/**Simple......
  • Linux之系统故障汇总
    一、系统可能会出现的故障1、管理员密码忘记2、系统无法正常启动grub损坏(MBR损坏、grub配置文件丢失)系统初始化故障(某文件系统无法正常挂载、驱动不兼容)服务故障用户无法登录系统(bash程序故障)3、命令无法运行4、编译过程无法继续(开发环境缺少基本组件)二、单用......
  • 树莓派 linux安装PyBlueZ报错:fatal error: bluetooth/bluetooth.h: No such file or d
    IwanttobuildacfilebasedonBlueZbutseemsnobluetooth.hfileinmysystem.fatalerror:bluetooth/bluetooth.h:NosuchfileordirectoryIamsurethebluetoothdongleisrunningcorrectlyandIhavebuiltBluezsuccessfully.UpdateFormyca......