top命令查看进程信息详解

文章资讯 2020-07-20 08:40:24

top命令查看进程信息详解

常被人说的VIRT=RES+SWAP
一般情况下直接使用top命令查看进程信息时,每个进程的的虚拟内存使用情况VIRT并不是实际使用的大小,
需要使用top -m命令,使用后列表中的VIRT会被替换成USED,这是再套用公式VIRT(USED)=RES+SWAP,等式成立。
VIRT 值最高的进程就是内存使用最多的进程。当你在用 top 排查为什么你的电脑运行无比卡的时候,那个 VIRT 数值最大的进程就是元凶。
VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小


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


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

PR
进程的调度优先级(动态优先级)。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
NI
进程的nice值(静态优先级-20~19)。越小的值意味着越高的优先级。


buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。
cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。
Swap分区
Swap分区,即交换区,系统在物理内存不够时,与Swap进行交换。即当系统的物理内存不够用时,把硬盘中一部分空间释放出来,以供当前运行的程序使用。当那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。那些被释放内存空间的程序一般是很长时间没有什么操作的程序。
Swap空间一般应大于或等于物理内存的大小,同时最小不应小于64M,最大应该是物理内存的两倍。

-/+ buffers/cache看作两部分:
-buffers/cache:正在使用的内存大小(注意不是used部分,因为buffers和cached并不是正在使用的,需要是它时是可以清空释放的),其值=used-buffers-cached。
+buffers/cache:可用的内存大小(同理也不是free表示的部分,因为buffers和cached是可以清空释放的),其值=free+buffers+cached。
Swap:硬盘上交换分区的使用大小。设计的目的就是当上面提到的+buffers/cache表示的可用内存都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘(也就是把buffers/cache里面长期不用的数据存放在swap里面,而swap又在硬盘),从而把磁盘的部分空间当做虚拟内存来使用。

当空闲物理内存不多时,不一定表示系统运行状态很差,因为内存的cache及buffer部分可以随时被重用,在某种意义上,这两部分内存也可以看作诗额外的空闲内存。swap如果被频繁调用,长时间不为0,则才是内存资源是否紧张的依据。通过free看资源时,实际主要关注-/+ buffers/cache的值就可以知道内存到底够不够了。