$ top
top - 17:15:58 up 33 days, 4:53, 3 users, load average: 2.16, 1.75, 1.46
Tasks: 76 total, 3 running, 73 sleeping, 0 stopped, 0 zombie
%Cpu(s): 99.5 us, 0.5 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1883724 total, 53948 free, 794396 used, 1035380 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 916476 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21207 root 20 0 859688 703220 1124 S 99.2 37.3 70:41.21 bwa
5543 root 10 -10 127472 7616 4408 S 0.6 0.4 395:08.35 AliYunDun
5478 root 10 -10 32716 2904 1244 S 0.1 0.2 10:16.20 AliYunDunUpdate
21640 root 20 0 0 0 0 R 0.1 0.0 0:00.03 kworker/0:2
top结果解读
- 第一行:系统状况
top - 17:15:58 # 当前系统时间
up 33 days, 4:53 # 系统已经运行了这么长时间(在这期间没有重启过)
3 users # 当前有2个用户登录系统
load average: 2.16, 1.75, 1.46 # 分别是1分钟、5分钟、15分钟的负载情况
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
- 第二行:运行进程统计
Tasks: 76 total, # 系统现在共有76个进程,
3 running, # 其中处于运行中的有3个,
73 sleeping, # 73个在休眠,
0 stopped, # stoped状态的有0个,
0 zombie # zombie(僵尸)状态的有0个
第三行:cpu状态
%Cpu(s): 99.5 us, # 用户空间占用CPU的百分比。
0.5 sy, # 内核空间占用CPU的百分比。
0.0 ni, # 改变过优先级的进程占用CPU的百分比。
0.0 id, # 空闲CPU百分比。
0.0 wa, # IO等待占用CPU的百分比。
0.0 hi, # 硬中断(Hardware IRQ)占用CPU的百分比。
0.0 si, # 软中断(Software Interrupts)占用CPU的百分比
0.0 st
Linux CPU的使用比率和windows概念不同
用户空间
内核空间
- 第四行:内存状态
KiB Mem : # 内存状态
1883724 total, # 物理内存总量(2GB)
53948 free, # 空闲内存总量
794396 used, # 使用中的内存总量
1035380 buff/cache # 缓存的内存量
使用中的内存总量(used)指的是现在系统内核控制的内存数;
空闲内存总量(free)是内核还未纳入其管控范围的数量。
纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
- 第五行:swap交换分区
KiB Swap:
0 total, # 交换区总量
0 free, # 空闲交换区总量
0 used. # 使用的交换区总量
916476 avail Mem
注:不能用windows的内存概念理解linux系统。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行:空行
第七行以下:各进程(任务)的状态监控
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 # 进程名称(命令名/命令行)
提炼自龟仙人的博客