与swap混淆,free和/ proc / pid / smaps显示不同的结果

时间:2015-06-23 12:52:08

标签: linux memory swap proc

我刚遇到交换问题,所以我试图找到哪个进程使用swap,并在this中显示脚本(getswap.sh)。这是php-fpm,大约200个子进程,要么是1M交换空间。所以我杀了php-fpm。然后我再次运行脚本,使用的总交换减少了很多。然后,导致 free -m 仅降低约3M。有什么问题?

在杀死php-fpm之前

[root@eng /tmp]# bash getswap.sh | sort -n -k5>out
[root@eng /tmp]# cat out|awk '{a+=$5;}END{print a;}'
202076
[root@eng /tmp]# free -m
             total       used       free     shared    buffers     cached
Mem:         64259      60566       3692          0        192      17098
-/+ buffers/cache:      43275      20983
Swap:         4095        155       3940

杀死php-fpm后:

[root@eng /tmp]# bash getswap.sh | sort -n -k5>out
[root@eng /tmp]# cat out|awk '{a+=$5;}END{print a;}'
108456
[root@eng /tmp]# free -m
             total       used       free     shared    buffers     cached
Mem:         64259      60402       3857          0        192      17043
-/+ buffers/cache:      43166      21092
Swap:         4095        152       3943

和脚本:

#!/bin/bash
function getswap {
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
    PID=`echo $DIR | cut -d / -f 3`
    PROGNAME=`ps -p $PID -o comm --no-headers`
    for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
    do
        let SUM=$SUM+$SWAP
    done
    echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
    let OVERALL=$OVERALL+$SUM
    SUM=0
done
echo "Overall swap used: $OVERALL"
}
getswap
事先提前

0 个答案:

没有答案