目录
输出结果如下:
Status下会有很多进程描述信息,但对于内存仅需要关注红框中内容即可
项目名 | 数值 | 意义 |
VmPeak | 399256kB | 是当前进程使用的虚拟内存的峰值 |
VmSize | 333860kB | 是当前进程实时的虚拟内存使用情况 |
VmHWM | 7628kB | 是当前进程使用的物理内存的峰值 |
VmRSS | 7628kB | 是当前进程实时的物理内存使用情况 |
RssAnon | 4692kB | 当前进程使用的匿名内存大小 |
RssFile | 2936kB | 当前进程文件使用内存大小 |
RssShmem | 0kB | 当前进程共享内存大小 |
VmData | 67056kB | 是当前进程数据段的大小 |
VmStk | 132kB | 是当前进程堆栈段的大小 |
VmExe | 8kB | 是当前进程代码段的大小 |
VmLib | 4472kB | 是当前进程使用的LIB库的大小 |
针对内存问题的检证,首先要确认VmSize和VmRSS的变化情况确认来是否有内存泄漏。如果出现泄漏则需要观察其他项目来判断是哪里出现了问题。
- #!/bin/bash
-
-
- a=1
- echo "8 > /proc/sys/kernel/printk"
- while [ $a -eq 1 ];do
-
- echo "########################"
- echo `date "+%Y-%m-%d %H:%M:%S"`
-
-
- echo "free"
- free -h
-
- for pid in `ls -1 /proc/ | egrep "[[:digit:]]"`;
- do if [ -f "/proc/$pid/status" ];
- then proc_name=`grep '^Name' /proc/$pid/status | awk '{print $2}'`;
- mem_VmPeak=`grep '^VmPeak' /proc/$pid/status | awk '{print $2}'`;
- mem_VmRSS=`grep '^VmRSS' /proc/$pid/status | awk '{print $2}'`;
- mem_VmSize=`grep '^VmSize' /proc/$pid/status | awk '{print $2}'`;
- mem_VmData=`grep '^VmData' /proc/$pid/status | awk '{print $2}'`;
- if [[ $mem_VmPeak != "" ]]; then echo "]$proc_name] VmPeak : ]$mem_VmPeak] kB VmRSS : ]$mem_VmRSS] kB VmSize : ]$mem_VmSize] kB VmData : ]$mem_VmData] kB";
- fi
- fi
- done
-
-
-
- echo "########################"
- sleep 30s
- done
- #!/bin/bash
- while [ 1 -eq 1 ];do
- echo "########################"
- echo `date "+%Y-%m-%d %H:%M:%S"`
- free
- pid=$(ps -aux |grep logmgr|head -n 1|awk '{print $2}')
- echo "++++++++++++++++++++"
- echo RssSum_SUM:`cat /proc/$pid/smaps |grep Rss|awk 'BEGIN{sum=0;}{sum=sum+$2;}END{print sum}'`KB
- echo PssSum_SUM:`cat /proc/$pid/smaps |grep Pss|awk 'BEGIN{sum=0;}{sum=sum+$2;}END{print sum}'`KB
- echo Shared_Clean_SUM:`cat /proc/$pid/smaps |grep Shared_Clean|awk 'BEGIN{sum=0;}{sum=sum+$2;}END{print sum}'`KB
- echo Shared_Dirty_SUM:`cat /proc/$pid/smaps |grep Shared_Dirty|awk 'BEGIN{sum=0;}{sum=sum+$2;}END{print sum}'`KB
- echo Private_Clean_SUM:`cat /proc/$pid/smaps |grep Private_Clean|awk 'BEGIN{sum=0;}{sum=sum+$2;}END{print sum}'`KB
- echo Private_Dirty_SUM:`cat /proc/$pid/smaps |grep Private_Dirty|awk 'BEGIN{sum=0;}{sum=sum+$2;}END{print sum}'`KB
- echo "-----------------------"
- cat /proc/$pid/status
-
- sleep 30s
- done