搞清linux内存used占用,计算出top命令内存used总和是怎么来的

在这个大年30早晨,收到告警服务器磁盘只有20%空闲,登上去处理后顺便发现服务器16G内存快用满了,top命令显示只有几百M了。
登录zabbix,从1月29,30号开始,内存使用一路上涨就再没下来过了。

11.png

图表的V线段还是部署的每天晚上自动

sync
echo 1 > /proc/sys/vm/drop_caches

这个部署是为了释放cached占用过大的问题了,也是之前内存占用满的问题。
安稳了个把月,cached没占了,第一次发现slab占用如此高。

[root@xxxxx]# echo `cat /proc/slabinfo |awk 'BEGIN{sum=0;}{sum=sum+$3*$4;}END{print sum/1024/1024/1024}'` GB
13.81611 GB
#释放slab占用的内存,先释放再设置回自动
echo 2 > /proc/sys/vm/drop_caches
echo 0 > /proc/sys/vm/drop_caches

整理了一下,top命令查看内存占用之后,要弄清楚是怎么计算来的。
基本上等于这个命令的结果

cat /proc/meminfo | grep -w -E "Active|Cached|Buffers|Slab|PageTables" | grep -v "(" | awk '{sum+=$2} END {print sum}'

扩展

查看所有进程占用的物理内存总和

echo `ps aux --sort -rss | awk '{sum+=$6} END {print sum/1024/1024}'` GB

查看slab占用的物理内存

cho `cat /proc/slabinfo |awk 'BEGIN{sum=0;}{sum=sum+$3*$4;}END{print sum/1024/1024/1024}'` GB

标签: none

非特殊说明,本博所有文章均为博主原创。

最新文章

发表评论