top统计信息
继49章今天我们继续来看top的相关知识。
image.png上图第二行:进程信息
Tasks: 163 total, 1 running, 162 sleeping, 0 stopped, 0 zombie
Tasks: 表示任务数,默认看到的是进程总数,按下键盘大写的H,可以切换成线程数。如:
Threads: 240 total, 1 running, 239 sleeping, 0 stopped, 0 zombie
可以看到Threads: 240 total是大于Tasks: 163 total,因为一个进程可能有多个线程。(再按下大写H可以还原成Tasks,按下小写的h进入到top的帮助信息)
上图第六行开始下面所有行加起来等于163 total。
1 running:正在运行的进程数
162 sleeping:睡眠的进程数
0 stopped:已停止的进程数
0 zombie:僵尸进程数(要死不死的状态)
第六行的S列用来显示不同状态的进程:
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
上图第四行:内存信息
KiB Mem : 1882196 total, 1088376 free, 434592 used, 359228 buff/cache
KiB Mem: 显示内存信息,默认单位是KB,键盘按下大写的E,可以切换成MB,不停的按E,可以继续切换成
GB,
1882196 total: 总的物理内存
434592 used:已被使用的物理内存
1088376 free:空闲的内存总量
359228 buff/cache:缓冲内存量
cache: 是高速缓存,用于CPU和内存之间的缓冲。CPU直接从内存中存取数据要等待一
定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次
使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系
统的效率。
再比如:当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在
内存中进 行缓存,这部分 内存就是Cache Memory(缓存内存)。
buffer:缓冲区。是I/O缓存,用于内存和硬盘的缓冲
注意:从磁盘中读取数据是没有从内存中读取数据快的,所以buffer用来做从磁盘中读取数据的缓冲区。内存和磁盘中间的桥梁。而内存和cpu的速度也是不匹配的,而cpu要从内存中读取到数据,所以需要有cache和桥梁(cache用来做程序的缓存)。
上图第五行:内存交换区信息
KiB Swap: 4063228 total, 4063228 free, 0 used. 1292660 avail Mem
KiB Swap:交换分区,是从磁盘中虚拟出来的交换分区,一般比物理内存要大1-2倍
4063228 total:交换区总容量
4063228 free:空闲交换区总量
0 used:使用交换区的总量
1292660 avail Mem :可用交换取总量
缓冲交换区:内存中的内容已经被换出交换区而载入内存,该部分交换区对应的内存被换出时可以不必再对交换区写入
上图第六行:进程信息
进程信息区统计信息区域的下方显示了各个进程的详细信息.
首先来认识一下各列的含义:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAN
序号 列名 含义
1 PID 进程id
2 PPID 父进程id
3 RUSER Real user name
4 UID 进程所有者的用户id
5 USER 进程所有者的用户名
6 GROUP 进程所有者的组名
7 TTY 启动进程的终端名.不是从终端启动的进程则显示为 ?
8 PR 优先级,0-20,0对应nice的-20,20对应nice的0,PR值越小,优先级越高。
9 NI nice值.负值表示高优先级,正值表示低优先级
10 P 最后使用的CPU,仅在多CPU环境下有意义
11 %CPU cpu使用率(当前进程占用总的cpu的使用率)。CPU时间占用百分比
12 TIME 进程使用的CPU时间总计,单位秒
13 TIME+ 进程使用的CPU时间总计,单位1/100秒
14 %MEM 内存使用率。进程使用的物理内存百分比
15 VIRT 进程使用的虚拟内存总量,单位kb,VIRT=SWAP+RES
16 SWAP 进程使用的虚拟内存中,被换出的大小,单位kb.
17 RES 进程使用的、未被换出的物理内存大小,单位kb,RES=CODE+DATA
18 CODE 可执行代码占用的物理内存大小,单位kb
19 DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
20 SHR 共享内存大小,单位kb
21 nFLT 页面错误次数
22 nDRT 最后一次写入到现在,被修改过的页面数.
23 S 进程状态:
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
24 COMMAND 命令名/命令行
25 WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
26 Flags 任务标志,参考 sched.h
下面是我整理的所有的top展示列:
image.png
image.png
image.png
一般我们只需要掌握;top 默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 几个列!
按下键盘小写的e, VIRT RES SHR 这三列单位会发生变化。VIRT是虚拟的内存,RES是真实的物理内存,所以VIRT一般会比 RES 要大。
进程号PID:应用程序的进程号不一定是连续的。1-100连续的PID号是系统启动时可能需要依赖的进程。
%cpu: 当前进程占用cpu的使用率
下面我们来学习下top的常用快捷键指令。
top中的按键命令
image.png直接输入top,展示信息如下:
image.png
1.上图按下键盘小写的h,进入帮助页面,如下图
image.png
2.帮助页面按下q,退出帮助页面,返回到top页面
3.top页面按下小写d--->输入top监控数据刷新时间间隔(默认是3秒一更新)
image.png4.top页面按下大写的Z,进入颜色帮助页面,
image.png
4=blue,按下数字4,回车---》top第六行信息字体显示蓝色,如下图:
image.png
需要掌握的
image.png1.top页面按下小写的b,按下小写n,再输入4--》回车--》得到的结果就是如下图只有4个线程的展示信息
image.png
2.继上面,再按下n,输入0,又回到top页面,显示所有的。
3.按下小写的f键---》进入到下面帮助信息
image.png
top 默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 几个列!上图标注号的是默认展示的,如果我们还想显示其他列,那么可通过键盘上下键定位你要选择的列,按下键盘的空格键,便会将此项标注号。比如:
上图黄色定位在%cpu,此时按键盘行的上下键,可定位到UID,此时按下键盘空格键,如下图:会自动标注*号。
此时按下q,退出到top---->可以到末尾列加上了UID
image.png
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转
网友评论