<返回更多

怎么找出Linux内存瓶颈

2019-10-12    
加入收藏

linux/unix系统中,内存到底够不够用?应用/进程使用了多少内存?本文希望能给出一些的建议能够有所帮助。

我们经常使用free命令来观察获取内存使用情况。

怎么找出Linux内存瓶颈

 

free 输出的是一个表格,其中的数值都默认以字节为单位。表格总共有两行七列,这两行分别是物理内存 Mem 和交换分区 Swap 的使用情况.而七列中,每列数据的含义分别为:

第一列,total 是总内存大小;

第二列,used 是已使用内存的大小,包含了共享内存;

第三列,free 是未使用内存的大小;

第四列,shared 是共享内存的大小;

第五列,buffers 是缓存的大小;

第六列,cache是缓冲区的大小;

最后一列,available 是新进程可用内存的大小。

那么buffers/cached又是什么意思呢?

Buffer,是指buffer cache,是缓冲区用到的内存,是对block设备的数据缓冲,用来存储磁盘数据,对应的是 /proc/meminfo 中的 Buffers 值。

Cache,是指page cache,是页缓存和 Slab 用到的内存,从磁盘读取文件的页缓存,用来缓存从文件读取的数据。对应的是 /proc/meminfo 中的 Cached 与 SReclaimable 之和。

我们也经常使用ps和top来获取内存数据和进程的内存性能数据。top命令中VIRT、RES、SHR和%MEM的含义

VIRT 是进程虚拟内存的大小。只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内。

RES 是已分配使用的物理内存的大小,但不包括 Swap 和共享内存。

SHR 是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等。

%MEM 是进程使用物理内存占系统总内存的百分比。

那么如何获取一个进程内存使用情况呢,linux通过proc文件系统为每个进程的内存信息都记录在/proc//smaps文件中。在smaps文件中,每一条记录(如下图2所示)表示进程虚拟内存空间中一块连续的区域。文件解读如下:

怎么找出Linux内存瓶颈

 

希望以上能够对Linux内存的指标有更清晰的了解,对度量和分析系统内存,业务/进程使用内存进行进一步更深入的分析。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>