top
命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认进入top时,各进程是按照CPU的占用量来排序的。
常用参数
-u <username>
查看指定用户的进程
-p <PID>
查看指定进程
命令显示
codedancing@CentOS:~$ top
top - 20:45:54 up 1 day, 7:38, 1 user, load average: 0.02, 0.04, 0.05
Tasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 1.0 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1016288 total, 82676 free, 648696 used, 284916 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 195552 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1058 root 20 0 740212 10924 1488 S 0.7 1.1 7:54.51 barad_agent
501 root 20 0 163928 16976 1012 S 0.3 1.7 7:36.82 YDService
23276 root 20 0 2313928 424428 2532 S 0.3 41.8 2:12.45 java
解释:
第一行,任务队列信息,同 uptime 命令的执行结果
20:45:54 — 当前系统时间
up 1 day, 7:38 — 系统已经运行了1天7小时38分钟
1 users — 当前有1个用户已登录系统
load average: 0.02, 0.04, 0.05 — 1分钟、5分钟、15分钟的系统平均负载情况
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。假设机器的逻辑处理器数量为n,则当负载的平均值为n的时候,机器就是刚好满负载运行了,如果大于n,就是超负荷运行了。
什么是Linux CPU负载?
如果CPU每分钟最多处理100个进程,那么系统负荷0.2意味着CPU在这1分钟里只处理20个进程;系统负荷1.0意味着CPU在这1分钟里正好处理100个进程;系统负荷1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等待CPU处理。
干预法则:
当系统负荷持续大于0.7,必须开始调查了,问题出在哪里,防止情况恶化。
当系统负荷持续大于1.0,必须动手寻找解决办法,把这个值降下来。
为了电脑顺畅运行,系统负荷最好不要超过1.0,这样就没有进程需要等待了,所有进程都能第一时间得到处理。
第二行,Tasks — 任务(进程)
系统现在共有82个进程,状态是:1个运行(running),81个休眠(sleep),有0个停止(stop),0个僵尸(zombie)。
第三行,CPU状态信息
us
— 用户空间占用CPU的百分比
sy
— 内核空间占用CPU的百分比
ni
— 改变过优先级的进程占用CPU的百分比
id
— 空闲CPU百分比
wa
— IO等待占用CPU的百分比
hi
— 硬中断(Hardware IRQ)占用CPU的百分比
si
— 软中断(Software Interrupts)占用CPU的百分比
第四行,内存状态(单位:KB)
total
— 物理内存总量
free
— 空闲内存总量
used
— 使用中的内存总量
buffers
— 缓存的内存量
第五行,swap交换分区信息
total
: 交换区内存总容量
free
: 交换区空闲的内存容量
used
: 交换区内存使用的容量
cached
: 缓存的交换区总量
第六行,各进程(任务)的状态监控
PID
— 进程id
USER
— 进程所有者
PR
— 进程优先级
NI
— nice值。负值表示高优先级,正值表示低优先级
VIRT
— 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES
— 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR
— 共享内存大小,单位kb
S
— 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU
— 上次更新到现在的CPU时间占用百分比
%MEM
— 进程使用的物理内存百分比
TIME+
— 进程使用的CPU时间总计,单位1/100秒
COMMAND
— 进程名称(命令名/命令行)
top交互指令
数字1
:可监控每个逻辑CPU的状况
k
: 终止一个进程
i
:忽略闲置和僵死进程
m
:切换显示内存状态信息
t
:切换显示CPU状态信息
c
:切换显示命令名称和完整命令行
P
:根据CPU使用百分比大小进行排序( top默认 )
M
:根据驻留内存大小进行排序
T
:根据时间/累计时间进行排序