linux TOP命令解析

top 命令的输出提供了有关系统总体负载、内存使用情况以及各个进程资源使用的实时信息。以下是详细的解释:

1. 系统运行时间和负载信息

复制代码
top - 11:13:58 up 28 days, 23:59,  3 users,  load average: 2.77, 1.98, 1.63
  • 时间 :当前系统时间 11:13:58

  • 运行时间 :系统已连续运行了 28 days, 23:59(28 天 23 小时 59 分钟)。

  • 登录用户数 :当前有 3 个用户登录。

  • 负载均值(load average) :系统在过去 1515 分钟的平均负载分别是 2.771.981.63。这些数值表示系统队列的任务数量,大于 CPU 核心数时会导致任务堆积。

    如果系统有 4 核心,负载 4 表示 CPU 刚好满负荷运行,负载超过 4 表示进程排队等待 CPU 时间,低于 4 则表示系统相对空闲。

    在这个例子中:

    复制代码
      2.77:过去 1 分钟的平均负载,表示系统在最近一段时间稍微繁忙。
      1.98:过去 5 分钟的平均负载,比 1 分钟前略低,表明系统负载在过去 5 分钟内有所缓解。
      1.63:过去 15 分钟的平均负载,比 5 分钟负载进一步降低,表明 15 分钟之前系统负载较轻,而最近负载逐渐上升。
      如何判断系统负载是否正常
      1. 单 CPU 系统:平均负载为 1.0 或以下一般表示系统处于正常状态。如果超过 1.0,系统可能会出现性能下降,表明有进程在等待 CPU 时间。
      多核 CPU 系统:例如 4 核系统中,1.0 负载表示系统 25% 的 CPU 资源在被使用。如果负载接近 4.0 或更高,则表明 CPU 已满载,超过 4.0 则表示有进程在等待资源。

2. 任务(Tasks)概况

复制代码
任务: 1055 total,   1 running, 1054 sleeping,   0 stopped,   0 zombie
  • total :总任务数 1055
  • running :正在运行的任务数 1
  • sleeping :处于睡眠状态的任务 1054,大部分进程在等待资源或输入输出操作。
  • stopped :停止的任务数 0
  • zombie :僵尸任务数 0,即已终止但未释放资源的进程。

3. CPU 使用率

复制代码
%Cpu(s):  1.6 us,  0.1 sy,  0.0 ni, 98.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • us(user) :用户空间占用 CPU 的百分比 1.6%
  • sy(system) :系统空间(内核)占用 CPU 的百分比 0.1%
  • ni(nice) :用户进程在修改过优先级后的 CPU 占用 0.0%
  • id(idle) :空闲 CPU 百分比 98.2%
  • wa(iowait) :等待 I/O 操作完成的时间百分比 0.0%
  • hi(hardware interrupts) :硬件中断占用的 CPU 百分比 0.0%
  • si(software interrupts) :软件中断占用的 CPU 百分比 0.0%
  • st(steal time) :虚拟化环境下其他进程占用 CPU 的时间百分比 0.0%

4. 内存使用情况

复制代码
MiB Mem : 128346.8 total,  10301.6 free,  56327.3 used,  61717.8 buff/cache
  • total :总内存为 128346.8 MiB
  • free :空闲内存 10301.6 MiB
  • used :已用内存 56327.3 MiB
  • buff/cache :用作缓冲和缓存的内存 61717.8 MiB,这部分内存将被快速释放以供其他任务使用。

5. 交换分区使用情况

复制代码
MiB Swap:   6504.0 total,    343.5 free,   6160.5 used.  70975.8 avail Mem
  • total :交换分区总大小 6504.0 MiB
  • free :空闲交换分区大小 343.5 MiB
  • used :已使用交换分区大小 6160.5 MiB
  • avail Mem :当前系统可用内存 70975.8 MiB,包括了未使用的内存以及可以快速从缓存中释放的内存。

6. 各进程的详细信息

每个进程的资源占用详细信息如下:

字段 含义
PID 进程 ID
USER 进程所有者
PR 优先级(Priority)
NI Nice 值,优先级调整数值
VIRT 进程占用的虚拟内存(Virtual memory)
RES 进程占用的物理内存(Resident memory)
SHR 进程使用的共享内存
%CPU CPU 使用率
%MEM 内存使用率
TIME+ 进程运行的累计 CPU 时间
COMMAND 进程名称或启动命令
进程分析示例
复制代码
  661269 mysql     20   0   47.6g  39.6g  23080 S 136.3  31.6 676:00.34 mysqld
  • 661269:进程 ID。
  • mysql:进程所属用户。
  • 20:优先级。
  • 0:Nice 值(默认值)。
  • 47.6g :虚拟内存使用量 47.6 GB
  • 39.6g :实际使用的物理内存 39.6 GB
  • 23080 :共享内存 23 MB
  • 136.3 :CPU 使用率 136.3%(多核情况下可能超过 100%)。
  • 31.6 :内存使用率 31.6%
  • 676:00.34 :累计 CPU 占用时间 676 分钟。
  • mysqld:进程名(MySQL 数据库服务)。

这个进程占用大量的 CPU 和内存资源,是系统性能瓶颈的主要进程,可能需要进一步优化或进行其他资源分配。

bash 复制代码
1. VIRT(Virtual Memory,虚拟内存)
VIRT 表示进程占用的虚拟内存总量,包括物理内存和交换空间。
内容:
进程分配的所有内存,包括实际使用的物理内存、交换空间和未使用的保留内存(即分配但未实际加载的内存区域)。
包括代码、数据段、堆、栈、动态库、共享内存等。
作用:
VIRT 并不代表进程实际使用的物理内存,而是系统为进程预留的内存空间。因此它可能会比 RES 和 SHR 高得多。
VIRT 较大时并不一定会占用很多物理内存。虚拟内存允许进程在地址空间上获得比物理内存更大的灵活性,帮助管理和隔离进程之间的内存。
2. RES(Resident Memory,常驻内存)
RES 表示进程实际占用的物理内存大小(即实际加载在 RAM 中的内存)。
内容:
进程实际加载到物理内存的部分,包括独占和共享的物理内存。
反映了进程对系统物理内存的实际需求。
作用:
RES 是系统资源消耗的一个更真实的指标,比 VIRT 更能体现进程实际使用的内存。
当 RES 较大时,系统的物理内存可能被大量占用,从而导致其他进程的内存不足,进而可能导致系统使用交换空间(swap),影响性能。
3. SHR(Shared Memory,共享内存)
SHR 表示进程使用的共享内存大小。
内容:
包括进程使用的共享库和其他共享资源(如共享的内存段),这些内存区域可能被多个进程同时使用。
包括由多个进程共享的代码段、共享库和动态库等。
作用:
SHR 可以帮助识别进程之间共享的内存,从而避免重复分配相同的内存资源,提升内存利用率。
SHR 值较高表示进程对共享资源依赖较多,可以通过优化共享库的加载等方式提高内存使用效率。
相关推荐
眠修1 小时前
Kuberrnetes 服务发布
linux·运维·服务器
即将头秃的程序媛4 小时前
centos 7.9安装tomcat,并实现开机自启
linux·运维·centos
fangeqin4 小时前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl
爱奥尼欧5 小时前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
超喜欢下雨天6 小时前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
tan77º6 小时前
【Linux网络编程】网络基础
linux·服务器·网络
笑衬人心。7 小时前
Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
linux·mysql·ubuntu
chanalbert9 小时前
CentOS系统新手指导手册
linux·运维·centos
星宸追风9 小时前
Ubuntu更换Home目录所在硬盘的过程
linux·运维·ubuntu
热爱生活的猴子9 小时前
Poetry 在 Linux 和 Windows 系统中的安装步骤
linux·运维·windows