我是靠谱客的博主 甜甜皮带,最近开发中收集的这篇文章主要介绍linux内存的active,linux /proc/meminfo 中的active(file)值一直增大?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近一段时间我们系统里的这个现象困扰了我们很久,因此发个帖子想请大家帮忙指导一下思路。问题如下:

OS version:

Red Hat Enterprise Linux Server release 6.9

从系统上线以来,内存free部分持续减少,chache持续增加,基本上增加的部分就是/proc/meminfo 中的active(file)增加的大小。系统上跑的是oracle数据库。虽然linux将文件缓存到chache中是正常行为,但是这个现象一直持续,想搞明白是什么东西一直在缓存file。

之前使用了内存抓取工具crash按以下命令抓取进程中文件信息:crash> foreach files -c -R REG

输出格式如下:

PID: 2203 TASK: ffff88132d169c00 CPU: 30 COMMAND: "oracle_2203_ncd"

ROOT: / CWD: /u01/app/oracle/product/12.2.0.1/dbhome_1/dbs

FD INODE I_MAPPING NRPAGES TYPE PATH

7 ffff8825ecbbe588 ffff8825ecbbe6e0 329 REG /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/mesg/oraus.msb

14 ffff8827bdb900e8 ffff8827bdb90240 1 REG /tmp/.oracle/oracle_xrc_domain_cm.192.168.10.57.31776

16 ffff8825ecb63108 ffff8825ecb63260 15 REG /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/mesg/orazhs.msb

17 ffff8825ecbbe588 ffff8825ecbbe6e0 329 REG /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/mesg/oraus.msb

按照我的理解,其中NRPAGES是该进程下该文件的Page数量,将每个进程下面缓存的所有文件的NRPAGES汇总即可计算出这一时刻每个进程缓存文件的总大小,然后挑两天的进行对比,即可找出是哪些进程缓存的文件增加了。

共收集和对比5天的数据如下表所示:

date NRPAGE G cache G active(file) G

0530 333.5267372 104 34.26329041

0604 336.3472214 108 36.19488525

0613 253.810276 109 38.11073303

0615 257.9771004 111 38.61402893

0620 256.5512581 113 40.54092407

0604对比0530发现NRPAGE总和的增加与active(file)的增加基本一致,对比每个进程发现是某个工具的Java进程缓存文件增加所导致,将该工具进程重启,对应的java缓存文件的大小大大降低。但是cache没有得到释放。整个现象依然没有得到改变,可以看到从0604到0613到0615到0620,active(file)依然持续增加,但是通过crash所获取的缓存中文件的大小总和却没什么变化,两边对应不上了,这就让我困惑了。

请熟悉Linux内存管理的前辈指点一下,该如何去查找和定位该现象产生的原因呢。

谢谢大家!

最后

以上就是甜甜皮带为你收集整理的linux内存的active,linux /proc/meminfo 中的active(file)值一直增大?的全部内容,希望文章能够帮你解决linux内存的active,linux /proc/meminfo 中的active(file)值一直增大?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部