动态监控进程

动态监控进程

top

topps 命令很相似。它们都用来显示正在执行的进程。topps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。

Linux top 命令用于实时显示 process 的动态。类似于 Windows 的任务管理器

top 命令的参数不多,真正好用的是它的交互菜单,一般我们不带参数直接使用 top 命令

……

现在我们来逐行分析页面中的信息

前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。

第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:

第二行,Tasks — 任务(进程),具体信息说明如下:

系统现在共有 178 个进程,其中处于运行中的有 1 个,177 个在休眠(sleep),stoped 状态的有 0 个,zombie 状态(僵尸进程,进程已经死掉,但是内存空间没有释放)的有 0 个。

第三行,CPU 状态信息,

具体属性说明如下:

备注:在这里 CPU 的使用比率和 windows 概念不同,需要理解 linux 系统用户空间和内核空间的相关知识!

此外,这里的指标展示的是所有 CPU 的平均值。按数字 1,可以展示每一个 CPU 的情况:

可以看到当前系统有 8 个核心,如果是用虚拟机创建的系统,那么这跟我们在确定虚拟机硬件的时候选择的 CPU 核心数应该是一样的。

第四行,内存状态,单位是字节(Kbyte),具体信息如下:

第五行,swap 交换分区信息(Kbyte),具体信息说明如下:

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到 free 中去,因此在 linux 上 free 内存会越来越少,但不用为此担心。

如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的 free + 第四行的 buffers + 第五行的 cached,按这个公式此台服务器的可用内存:436244 +3197800 +392340 = 3.8GB 左右。

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

第六行,空行。

前 5 行,统计信息区显示完毕,接下来开始显示进程信息

第七行以下:各进程(任务)的状态监控,项目列信息说明如下:

重点关注字段: RES%MEM%CPU

交互式菜单

按 h 进入帮助菜单

功能菜单:

top 常用参数

常用 top -Hp pid 来查看指定 pid 下的所有线程。这样我们看到哪个线程占用 CPU 或者内存最高,然后通过打印调用栈定位到代码。解决问题。

top 命令结果分析

TODO