输入top指令,进入进程显示页面
直接点击f,进入详细参数说明选项界面
编号
1.进程及编程
- PID 进程编号
- PPID 父进程编号
- PGRP 进程组编号
- TPGID Tty进程组编号
- TGID 线程组ID
2.用户及编号
- UID 有效用户编号 (即展示出来的身份有可能不是真实身份)
- USER 有效用户名
- RUID 真实用户编号
- RUSER 真实用户名称
- SUID 已保存的用户编号
- SUSER 已保存的用户名
- GID 有效用户组编号
- GROUP 有效用户组名称
- SID 会话编号 (即可以说是用户会话,也可以说是进程的会话)
特性
- S 进程状态 Process Status (R,S,D,Z) 等
- NI Nice value 友善度,好人值 (人好被插队)默认都是0,范围 [-20,19] PR Priority (通过 20 +
NI 计算出来的)其跟 NI 值一样的语义,也是友善度。值越低抢占的运行时间越多,其实际优先级就越高 (linux 099 的 pr 属性
realtime (rt) 任务,100139 (PR + 100)属性用户) - COMMAND 进程名或启动的命令行(通过 c命令切换)
- ENVIRON 环境变量
- TTY 使用的 Tty 没有的话表示为 ? 号。tty 提供交互的输入输出,没有 tty 的进程也就没有标准输入和输出
内存资源
- CODE 可执行文件代码段大小即 text resident set(TRS) (KB)
- DATA 数据段大小+栈空间大小 即 data resident set (DRS ) (KB)
- RES Resident Size (KB) 进程占用的实际物理内存大小。对应 %MEM 列。
- RES = CODE + DATA
- SHR Shared Memory (KB) 指明了 VIRT 中有多少是共享内存或库大小。
- SWAP Swapped size(KB) 使用的交互分区大小。
- USED RES + SWAP 大小
- VIRT Virtual Image (KB) 虚拟内存分配大小,包含了其他文件(如代码,共享库,mmap等)映射,交换分区映射的地址区间大小。以虚拟内存的地址空间占用理解就对了,并不能准确反应物理内存的占用。
CPU 资源
- TIME 进程占用 CPU 时间 (如果使用 S 命令启用累加模式(Cumulative Mode) 则包含其曾经的子进程。
- TIME+ CPU Time, hundredths 比如 5:29.38 对应的 CPU 时间格式为:
minutes:seconds.hundredths - %CPU CPU 使用率
- P Last Used Cpu (SMP)
统计数据
- nTH Number of Threads 线程数量
- nDRT Number of Dirty pages 脏页数量
- nMaj Major Page Faults (已请求的内存页还没有被加载,这是主要的应用申请内存产生的请求)
- nMin Minor Page Faults (内存页已加载但是没有被MMU管理)
- namespace 作为一种用于隔离一组进程的资源手段
- nsIPC IPC namespace Inode (用于隔离IPC)
- nsMNT MNT namespace Inode (用于隔离挂载点)
- nsNET NET namespace Inode (用于隔离网络栈)
- nsPID PID namespace Inode (用于隔离进程编号)
- nsUSER USER namespace Inode (用于隔离用户)
- nsUTS UTS namespace Inode (用于隔离域名和主机名)
- Inode 是一个描述文件系统对象(如文件或目录等)的数据结构。
CPU 使用率
top 命令中关于 CPU 使用率的主要以下面的数据来体现:
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
其中:
- us 表示 用户态的 CPU 占用时间
- sy 表示系统内核态 CPU 占用时间
- ni 手动 设置了 nice 值的进程占用的 CPU 时间
- id CPU 空闲时间
- wa CPU等待 IO 完成的时间
- hi 处理硬件中断的时间
- si 处理软件中断的时间
- st 虚拟化环境中被的虚拟机 steal (偷走) 占用的时间。
平均负载
Linux 中的平均负责有如下有一个值,一个简单的理解是 他们分别对应 1分钟,5分钟,15分钟的平均负载。
load average: 1.08, 1.10, 1.10
但是其实它是指数移动平均来计算的,也就是之前的负载值对当前的负载值的影响比较小。
具体解析参考:
1.Examining Load Average
另外值得说明的是,其统计的不仅仅是运行中的任务,也包含 D (uninterruble_sleep, disk sleep) 状态的任务,其数据也要结合 CPU 核数来看才有意义。 简单来说,平均负载除 CPU 核数大于3就负载有问题了。
进程状态
进程状态主要有 4种
- R Running 运行中
- S Sleeping 睡眠中
- D Disk sleep 即 uninteruptible_sleep 一般是等待硬件 IO。
- Z Zoombie 一般是父进程在调用 wait系统调用读取子进程状态之前就先退出了,导致子进程还占用了进程表的空间。