top 命令

一、top 命令界面概览

二、系统运行时间和平均负载

11:25:19 : 当前系统时间

up 409 days : 系统已经运行了 409 天(在这期间系统没有重启过)

3 users : 当前有 3 个用户登录了该服务器

load average: 1.06, 1.70, 1.38 : 系统 1 分钟、5 分钟、15 分钟的平均负载

load average 数据是每隔 5 秒钟(默认)检查一次活跃的进程数,然后按特定算法计算出的数值.如果这个数值除以逻辑 CPU 的数量后其结果高于 5,那么就代表系统在超负荷运转了

(这里提一下如何查看逻辑 CPU 的数量)

1、直接查看 cpu 的 processor 的个数

cat /proc/cpuinfo | grep "processor" | sort | uniq

2、top 命令运行的时候按数字键 1

三、任务(进程)的运行状态

系统现在总共有 151 个进程,其中处于运行状态的有 1 个、150 个在休眠状态(sleeping)、0 个在停止状态(stopped)、0 个在僵尸状态(zombie)

四、CPU 状态

这里显示不同模式下所占 CPU 时间百分比,这些不同的 CPU 时间表示

us(user) : 运行(未调整优先级的) 用户进程所占用的 CPU 时间百分比

sy(system) : 运行内核进程所占用的 CPU 时间百分比

ni(niced) : 运行已调整优先级的用户进程所占用的 CPU 时间百分比

wa(io wait) : 等待 IO 完成所占用的 CPU 时间百分比

hi(hardware interrupts) : 硬件中断所占用的 CPU 时间百分比

si(software interrupts) : 软件中断所占用的 CPU 时间百分比

st : 这个虚拟机被 hypervisor 偷去的 CPU 时间百分比

1.3% us : 用户空间所占用 CPU 时间的百分比

0.5% sy : 内核空间占用 CPU 时间的百分比

0.0% ni : 改变过优先级的用户进程所占用 CPU 时间的百分比

95.9% id : 空闲 CPU 的百分比

0.7% wa : IO 等待所占用 CPU 时间的百分比

0.0% hi : 硬中断(Hardware Interrupts)所占用 CPU 时间的百分比

0.0% si : 软中断(Software Interrupts)所占用 CPU 时间的百分比

1.7% st : 该虚拟机被 hypervisor 偷去的 CPU 时间的百分比

五、内存使用情况

接下来两行显示内存使用率,有点像 free 命令,第一行是物理内存使用,第二行是虚拟内存使用(交换空间)

物理内存显示的信息如下: 全部可用内存、空闲内存、已使用内存、缓冲内存

KiB Mem:

8008636 total : 物理内存总量 8008636 / 1024 = 7820 MiB (单位 KiB,1 MiB = 2^10 KiB)

130524 free : 空闲的物理内存总量 130524 / 1024 = 127 MiB

7706900 used : 已经使用的物理内存总量 7706900 / 1024 = 7526 MiB

171212 buff/cache : 缓冲的物理内存总量 171212 / 1024 = 167 MiB

虚拟内存显示的信息如下: 全部可用内存、空闲内存、已使用内存、可用内存

KiB Swap:

4063228 total : 交换区内存总量 4063228 / 1024 = 3967 MiB

1016208 free : 交换区空闲内存总量 1016208 / 1024 = 992 MiB

3047020 used : 交换区已使用内存总量 3047020 / 1024 = 2975 MiB

75524 avail Mem : 交换区可用内存总量 75524 / 1024 = 73 MiB

对于第四行中的 used(已使用的内存总量)指的是现在系统内核控制的内存总量、free(空闲内存总量)指的是内核还未纳入其管控范围的数量,纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到 free 中,因此 Linux 上 free 内存的数量会越来越少,但是不用为此担心

如果处于习惯去计算可用内存的总量,这里有一个近似的计算公式 : 第四行的 free + buff/cache = 130524 + 171212 = 301736 / 1024 = 294 MiB

对于内存监控,在 top 命令里我们要时刻监控第 5 行 swap 交换分区的 used,如果这个数值在不断的变化,说明内核在不断进行内存和 swap 的数据交换,这是真正的内存不够用了

六、各进程(任务)的状态监控

PID : 进程 ID,进程的唯一标识符

USER : 进程所有者的实际用户名
PR : 进程的调度优先级,这个字段的一些值是 rt(runtime),这意味这这些进程运行在实时态.
NI : 进程的 nice 值(优先级)越小的值意味着越高的优先级.负值表示高优先级,正值表示低优先级
VIRT : 进程使用的虚拟内存,进程使用的虚拟内存总量,单位 kb.VIRT=SWAP+RES
RES : 驻留内存大小,驻留内存是任务使用的非交换物理内存大小.进程使用的、未被换出的物理内存大小,单位 kb.RES=CODE+DATA
SHR : SHR 是进程使用的共享内存.共享内存大小,单位 kb
S : 这个是进程的状态,它有以下不同的值

  • D - 不可中断的睡眠态。
  • R – 运行态
  • S – 睡眠态
  • T – 被跟踪或已停止
  • Z – 僵尸态

%CPU : 自从上一次更新时到现在任务所使用的 CPU 时间百分比
%MEM : 进程使用的可用物理内存百分比
TIME+ : 任务启动后到现在所使用的全部 CPU 时间,精确到百分之一秒
COMMAND : 运行进程所使用的命令.进程名称(命令名/命令行)
还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组、组 ID 和其他更多的信息

转载: https://www.cnblogs.com/zhoug2020/p/6336453.html

原文地址:https://www.cnblogs.com/xiaomaomao/p/15715496.html