【运维必备知识】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 st us
: 用户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 优先级 NI nice值,影响进程调度的优先级 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性能:使用
iostat
或iotop
工具检查磁盘读写性能,判断是否存在I/O瓶颈。- 网络性能:通过
netstat
或iftop
查看网络流量和连接情况,判断是否存在网络瓶颈。
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)
参考
标签:负载,运维,0.0,top,系统,uptime,Linux,进程,CPU From: https://blog.csdn.net/qq_48450494/article/details/139560360