关于swap分区使用

1、swap分区

swap分区在系统内存不足时,会使用swap来存放内存中暂不用的数据,这能缓解内存不足,但是由于我们swap分区毕竟是硬盘,比起内存的速度差了几个量级,也就会导致程序变慢。

2、统计进程使用swap情况

其实也就是统计proc下pid里smaps文件中swap项的总和,

#!/bin/bash

function statswap {
    for PID in `ls /proc/ | grep "^[0-9].*"` 
    do
        sum=0
        NAME=`ps -p $PID -o comm --no-headers`
        for size in `grep Swap /proc/$PID/smaps 2>/dev/null| awk '{print $2}'`
        do
            ((sum=$sum+$size))
        done
        [[ $sum -gt 0 ]] && printf "PID=%-7s SWAP USED: %-8s Kbytes (%-10s)\n" $PID $sum $NAME
    done
}
statswap

也可以增加个排序,

[root@CentOS-7-2 /home]# sh statswap.sh | sort -k4nr
PID=948     SWAP USED: 17652    Kbytes (containerd)
PID=1386    SWAP USED: 940      Kbytes (mysqld    )
PID=921     SWAP USED: 868      Kbytes (sshd      )
PID=1167    SWAP USED: 288      Kbytes (mysqld_safe)
PID=1       SWAP USED: 144      Kbytes (systemd   )
PID=616     SWAP USED: 16       Kbytes (ModemManager)

当然也可以不用脚本,直接用一行命令也是可以的,for循环配合awk使用,

[root@localhost ~]# for pid in `ls /proc/ | grep "^[0-9].*"`;do awk 'BEGIN{sum=0}/Swap/{sum+=$2}END{if(sum>0)printf "PID=%-7s SWAP USED: %-8s Kbytes\n", '$pid', sum}' /proc/$pid/smaps 2>/dev/null;done  | sort -k4nr
PID=12444   SWAP USED: 1178888  Kbytes
PID=15046   SWAP USED: 1168772  Kbytes
PID=12615   SWAP USED: 1148220  Kbytes
PID=17448   SWAP USED: 654376   Kbytes
PID=32457   SWAP USED: 227580   Kbytes
PID=32458   SWAP USED: 227580   Kbytes
PID=32456   SWAP USED: 184832   Kbytes

3、释放进程使用的swap

有两个方法,一个是关闭swap分区,但是要保证内存余量够,不然就OOM了,

swapoff -a
swapon -a

另一个是重启对应进程了。

4、设置swap使用比例

可以通过/proc/sys/vm/swappiness来设置

/proc/sys/vm/swappiness
    The value in this file controls how aggressively the  kernel  will  swap
    memory  pages.   Higher  values  increase  aggressiveness,  lower values
    decrease aggressiveness.  The default value is 60.

如果我们内存足够,就可以将该值设置为0,这样内核就尽可能不去使用swap分区,避免程序进入swap分区后性能下降。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值