Ubuntu深度学习swap占满物理内存却空余

Ubuntu深度学习swap占满物理内存却空余

Ubuntu深度学习swap占满物理内存却空余

原因

以为加大ubuntu 的 swap 分区可以解决,但是过一会之后机器就特别特别卡!

排查

查看机器内存free -h

从结果可以看出来,机器在内存还剩 80% 但是 swap 分区却完全被使用完了,这说明创建好 swap 分区之后完全他完全不使用内存了,查阅资料得到如下解决办法。

解决问题

swappiness 的值的大小对如何使用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
            
  • 1
  • 2

所以才会出现我们上面那种情况,这个时候我们只需要调整这个值即可,

sysctl vm.swappiness=10 #临时修改
            echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改
            sysctl -p #生效
            
  • 1
  • 2
  • 3

改完之后就会使用物理内存了,刚才卡的情况也解决了