top
命令是用户监视 Linux 上的进程和系统资源使用情况是最常用到的命令
根据上图内容,我们来慢慢逐行解读;
(1)top - 14:54:08 up 954 days, 3:44, 1 user, load average: 13.57, 15.63, 16.76
top:当前时间
up:机器运行了多少时间
users:当前有多少用户
Load Average平均负载:过去 1 分钟、5 分钟和 15 分钟内的平均负载。
- 平均负载其实就是平均活跃进程数,直观上的理解就是单位时间内的活跃进程数。而 1 分钟内的平均负载已经达到系统的 CPU 个数,说明系统很可能已经有了性能瓶颈。
(2)Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombie
Tasks:当前有多少进程
running:正在运行的进程
sleeping:正在休眠的进程
stopped:停止的进程
zombie:僵尸进程
- 避免出现大量僵尸进程。大量的僵尸进程会用尽 PID 进程号,导致新进程不能创建。出现原因举例:父进程没有处理子进程的终止,还一直保持运行状态,或是子进程执行太快,父进程还没来得及处理子进程状态,子进程就已经提前退出。
(3)Cpu(s): 17.9%us, 11.5%sy, 0.1%ni, 68.6%id, 0.0%wa, 0.0%hi, 1.9%si, 0.0%st
us: 用户进程占CPU的使用率
sy: 系统进程占CPU的使用率
ni: 用户进程空间内改变过优先级的进程占用CPU百分比
id: 空闲CPU占用率
wa: 等待输入输出的CPU时间百分比
hi: 硬件中断占用的CPU时间百分比
si: 软件中断占用的CPU时间百分比
st: 虚拟服务占用的CPU时间百分比
- 如果 %id 很低, 那么说明CPU的工作负载很大并且没有多少计算负载能力剩余。 如果 %wa 很高,则说明瓶 CPU 处于等待计算的状态,但是正在等待I/O活动的完成(类似 从数据库中获取存储在 磁盘上 的一行数据)。如果软中断事件的频率过高时,内核线程也会因为 CPU 使用率过高而导致软中断处理不及时,进而引发网络收发延迟、调度缓慢等性能问题。
(4)Mem: 263898548k total, 251687076k used, 12211472k free, 123204k buffers
Swap: 142029816k total, 53908436k used, 88121380k free, 97482464k cached
total:内存总量
free:空闲内存
used:使用的
buffer/cache: 写缓存/读缓存
什么是交换区(Swap):交换区是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是我们常说的swap out和swap in
(5) PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
436 root 20 0 4386m 39m 9036 S 0.7 0.0 3:06.63 client
PID:进程id
USER:进程所有者
PR:优先级。数值越大优先级越高
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量
SWAP:进程使用的虚拟内存中被换出的大小
RES:进程使用的、未被换出的物理内存大小
SHR:共享内存大小
SHR:共享内存大小
S:进程状态。D表示不可中断;R表示运行;S表示睡眠;T表示跟踪/停止;Z表示僵尸进程。
%CPU:上次更新到现在的CPU占用百分比 ;
%MEM:进程使用的物理内存百分比 ;
TIME+:进程使用的CPU时间总计,单位1/100秒;
COMMAND:命令名/命令行