Skip to content

Linux SWAP分区满了,内存还剩很多

约 458 字大约 2 分钟

折腾Linux

2024-05-09

SWAP

交换空间。 是现代 Linux 系统中的第二种内存类型。交换空间的主要功能是当全部的 RAM 被占用并且需要更多内存时,用磁盘空间代替 RAM 内存。

影响swap分区大小的值

  • swappiness的值的大小对如何使用swap分区是有着很大的联系的。
  • swappiness参数值可设置范围在0到100之间。 此参数值越低,就会让Linux系统尽量少用swap分区,多用内存;参数值越高就是反过来,使内核更多的去使用swap空间。
  • swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
  • 当该参数= 0,表示只要有可能就尽力避免交换进程移出物理内存; 该 参数=100,这告诉内核疯狂的将数据移出物理内存移到swap缓存中。
    这个值只是一个Linux在判断是否交换内存(swap)的一个“倾向”参考值,而并不是说,设置为0以后,Linux就完全不会使用内存交换空间
    然后 ubuntu 和 centos 一般默认都是 60 ,就是当内存使用=(100%-60%)*内存总量
#查看值
cat /proc/sys/vm/swappiness
60 #表示内存使用过40%之后就使用SWAP

#查看
cat /proc/swaps

swapon --show
#具体占用
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less


#修改值
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p #重启



#刷新SWAP 
#刷新一次SWAP(将SWAP里的数据转储回内存,并清空SWAP里的数据) 
swapoff -a && swapon -a