Linux的top指令CPU占用率详解(白话版)——Linux进阶常用知识点
👦👦一个帅气的boy,你可以叫我Love And Program
🖱 ⌨个人主页:Love And Program的个人主页
💖💖如果对你有帮助的话希望三连💨💨支持一下博主
top命令中%CPU说明
- top命令
- CPU占用率说明(仅看cpu占用率详解请直接跳转到这)
- top关键列说明
- PID
- USER
- PR 和 NI
- VIR
- VIR
- SHR
- S
- %CPU
- %MEM
- TIME+
- COMMAND
- 参考
top命令
top 命令的输出提供了系统当前运行的进程及其资源占用情况的详细信息。包括进程 ID、用户、优先级、虚拟内存、物理内存、CPU 使用率、物理内存百分比、时间、进程名称,以下是对输出列的解释和示例分析:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28894 root 22 0 1501m 405m 10m S 52.2 1.3 2534:16 java
18249 root 18 0 3201m 1.9g 11m S 35.9 6.0 569:39.41 java
咱们要分析top指令中的cpu占用率,也就是 %CPU 这个指标,或许大家都知道这个指标,但是真有人问起你
- 为什么cpu占用率能超100%?
- 你说cpu占用率超300%是什么意思?可以解释一下吗?
CPU占用率说明(仅看cpu占用率详解请直接跳转到这)
输入top后
继续输入数字 1 进入cpu详细占用率说明界面
可以看到当前服务器是8核的,有8个CPU,咱们只需要看 第一列 us (反映应用程序的 CPU 占用情况) 即可,每个CPU最高使用率为%100,8个最高能用到800%,这才是 top命令中显示的 python进程对应**%CPU** 可以达到%264.1的原因(8个CPU占用率相加后稍微超出264.1是因为还统计了系统程序)
点击数字 2 进入第二个页面
这里的%CPU是百分制,最高为100us,也就是上述8个CPU所用显示为百分制。
top关键列说明
PID
- 进程的唯一标识符(Process ID)。示例中两个 Java 进程的 PID 分别是 28894 和 18249。
USER
- 进程所属的用户。示例中均为 root 用户运行。
PR 和 NI
- PR:进程的优先级(Priority),数值越小优先级越高。示例中分别为 22 和 18。
- NI:进程的“谦让度”(Nice Value),影响优先级调整范围。0 表示默认优先级。
VIR
- 进程使用的虚拟内存总量(Virtual Memory),包括共享库、交换分区等。(1501m 表示 1501 MB,3201m 表示 3201 MB。)
VIR
- 进程实际使用的物理内存(Resident Memory),单位通常是 KB 或 MB。405m 表示 405 MB,1.9g 表示 1.9 GB。
SHR
- 共享内存(Shared Memory),即被其他进程共享的内存部分。示例中分别为 10m 和 11m。
S
进程状态(Status):
- S:休眠(Sleeping)。
- R:运行中(Running)。
- D:不可中断休眠(Uninterruptible Sleep)。
- Z:僵尸进程(Zombie)。
%CPU
- 进程占用的 CPU 使用率。示例中分别为 52.2% 和 35.9%。
%MEM
- 进程占用的物理内存百分比。示例中分别为 1.3% 和 6.0%。
TIME+
- 进程自启动以来占用的总 CPU 时间.
- 2534:16 表示 2534 小时 16 分钟。
- 569:39.41 表示 569 小时 39 分钟 41 秒。
COMMAND
- 进程名称或启动命令。示例中均为 Java 进程
参考
参数 | 全称 | 含义描述 | 理想情况 |
---|---|---|---|
us | User Time | CPU 执行用户空间进程的时间(含 nice 进程),反映应用程序的 CPU 占用情况。 | 越高越好(合理范围内) |
sy | system time | CPU 在内核空间运行的时间(含硬中断和软中断),反映系统内核操作的 CPU 占用。 | 越低越好 |
ni | Nice Time | 低优先级用户进程(nice 进程)的 CPU 占用时间,通过 nice 值调整进程优先级。 | 通常较低(无需关注) |
id | Idle Time | CPU 处于空闲状态的时间,系统无进程可执行时的等待时间。 | (无需关注) |
wa | waiting time | CPU 等待 IO 操作完成的时间,反映系统在 IO 操作中的阻塞情况。 | 越低越好 |
hi | hard IRQ time | CPU 处理硬中断(硬件设备直接触发的中断)的时间,如磁盘、网卡等硬件请求。 | 通常较低 |
si | soft IRQ time | CPU 处理软中断(由硬中断派生的软件中断)的时间,如内核线程处理网络包、调度等。 | 通常较低 |
st | steal time | 虚拟机 CPU 被宿主机(Hypervisor)抢占的时间,即虚拟机等待 CPU 资源的时间。 | 越低越好 |