1: Top 命令按键

options按键说明示例其他
-u显示特定 user 的进程top -u lucas
-p显示特定 PID 的进程top -p 10001 10002
-n10 次输出后退出程top -n 10
1按数字 1 可以显示每个 CPU 核心使用情况
M根据驻留内存RES大小进行排序,由大到小(注意大小写)
RRES反序排序
P根据 CPU 使用百分比大小进行
T根据时间/累计时间进行排序
c切换显示命令名称和完整命令行
i忽略闲置和僵死进程。这是一个开关式命令。
f更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,空格确定显示或者取消显示 a 是切换
d更改刷新时间
o进入 top 后,按下 o 后,会让你输入过滤条件,输入 COMMAND=nginx,现在就只剩下模糊匹配 nginx 关键字的进程了
Shift+P对进程 CPU 利用率进行排序
Shift+O对进程 Memory 利用率进行排序

2 Top 参数说明

2.1 CPU 状态信息

0.0%us 【user space】— 用户空间占用 CPU 的百分比。

0.3%sy 【sysctl】— 内核空间占用 CPU 的百分比。

0.0%ni 【】— 改变过优先级的进程占用 CPU 的百分比

99.7%id【idolt】— 空闲 CPU 百分比

0.0%wa 【wait】— IO 等待占用 CPU 的百分比

0.0%hi 【Hardware IRQ】— 硬中断占用 CPU 的百分比

0.0%si 【Software Interrupts】— 软中断占用 CPU 的百分比

2.2 MemeState

  • 1003020k total,
  • 234464k used,
  • 777824k free,
  • 24084k buffers【缓存的内存量】

可用内存=free + buffer + cached

2.3 Swap 交换内存

  • 2031612k total,
  • 536k used,
  • 2031076k free,
  • 505864k cached【缓冲的交换区总量】

对于内存监控,在 top 里我们要时刻监控第五行 swap 交换分区的 used,如果这个数值在不断的变化,说明内核在不断进行内存和 swap 的数据交换,这是真正的内存不够用了。

2.4 各进程状态监控

  • 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 — 进程名称(命令名/命令行)

2.5 名词解释

2.5.1 VIRT:virtual memory usage 虚拟内存

1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请 100m 的内存,但实际只使用了 10m,那么它会增长 100m,而不是实际的使用量

2.5.2 RES:resident memory usage 常驻内存

1、进程当前使用的内存大小,但不包括 swap out 2、包含其他进程的共享 3、如果申请 100m 的内存,实际使用 10m,它只增长 10m,与 VIRT 相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

2.5.3 SHR:shared memory 共享内存

1、除了自身进程的共享内存,也包括其他进程的共享内存 2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小 3、计算某个进程所占的物理内存大小公式:RES – SHR 4、swap out 后,它将会降下来

2.5.4 DATA

1、数据占用的内存。如果 top 没有显示,按 f 键可以显示出来。 2、真正的该程序要求的数据空间,是真正在运行中要使用的。