我的系统怎么了-系统信息查看(三)内存哪里去了-free,cat,pman,ps,pmap,vmsate
前面讲过用ps、top、cat /proc/39960/status可以查看在北京大学北极星高性能计算平台服务器的进程使用的内存(请点击这里)。
那么如果查看北极星高性能计算平台登录节点的内存呢,使用free -g很容易看到,但是free的内存很少,都跑哪里去了,怎么释放,下面我们详细道来:
一、使用free查看内存:
红色圈为总内存92G
黄色圈为已用内存11G
按道理空闲内存为92-11=88G内存,实际只有free 49G内存,那么近32G的内存去哪里了,仔细看看在cache(绿色)里没有释放。
那么如何释放内存:
二、使用
1、echo 3 > /proc/sys/vm/drop_caches
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
释放完内存后改回去让系统重新自动分配内存。
echo 0 >/proc/sys/vm/drop_caches
连起来就是
[root@login12 ~]# echo 3 > /proc/sys/vm/drop_caches;echo 0 >/proc/sys/vm/drop_caches
内核2.6的版本执行上述的操作都没问题的,但是到了内核3系列,就不能执行echo 0 >/proc/sys/vm/drop_caches的操作了,这是一个坑,重启才能改回去,(跟弹簧一样,会自己改回去,不用重启)所以释放完就不用管了
2、sync; sysctl -w vm.drop_caches=3 效果和前面一样
三、查看/proc/meminfo文件
查看RAM使用情况最简单的方法是通过/proc/meminfo。
这个动态更新的虚拟文件列出了详细的内存使用情况。
[root@login05 ~]# cat /proc/meminfo
四、可以使用"–sort"选项对进程进行排序,例如按RSS(物理内存)进行排序:
[root@login12 ~]# ps aux --sort -rss |more
五、使用pmap命令查看
pmap命令用于报告进程的内存映射关系
[root@login05 ~]# pmap -d 13876 |more
13876: /usr/lpp/mmfs/bin/mmfsd
Address Kbytes Mode Offset Device Mapping
0000018012e4c000 24576 rwxs- 0000000000000000 000:00005 ss0
0000018017f22000 24576 rwxs- 0000000000000000 000:00005 ss0
000001801afc8000 264 rwxs- 0000000000000000 000:00005 ss0
。。。。。。。。。。。。。。。。。。。。。。。
00007ffefe797000 8 r-x-- 0000000000000000 000:00000 [ anon ]
ffffffffff600000 4 r-x-- 0000000000000000 000:00000 [ anon ]
mapped: 25973500K writeable/private: 5049004K shared: 329504K
六、vmstat命令
vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。
例如内存情况,不仅显示物理内存,也统计虚拟内存。
vmstat -s
样例如下:
[root@login05 ~]# vmstat -s