找出占用swap最多的进程

有时候监控出swap的使用量太高,而又不知道swap到底被谁用了,这时可以使用博客的这个方法找出占用swap最多的进程。在Linux内核 2.6.16中引入了一个系统内存接口特性,这个接口位于/proc/$pid/目录下的smaps文件中 ,一看内容发现是进程内存映像信息,比同一目录下的maps文件更详细些。参考文章:http://coolnull.com/3084.html

1: cat /proc/1/smaps 

    ^Swap开头的那个表示的是占用Swap的量的大小。

    那么查看你想要看的进程所使用的swap只需要:

        awk ‘/^Swap:/ {SWAP+=$2}END{print SWAP” KB”}’ /proc/$(pid)/smaps

2: 要统计出哪个命令占用最高,简单点就直接执行以下命令即可

    for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -nrk 2 


3: 找出占用swap高的进程后,看看能不能做什么调整,如果实在没得调整,就使用下列的命令把swap压入内存吧

    swapoff -a && swapon -a  #得先用free -m查看下内存还剩下多少

    http://www.07net01.com/linux/Linuxxiaruheshifangnacun_swapfenqumanliaozenmeban__8497_1344649111.html

你可能感兴趣的:(swap,释放swap,进程占用swap)