内存为空但交换已满?

内存为空但交换已满?

我在 Ubuntu mate 21.04 上,将 swappiness 设置为默认值 60。如果有大约 55 GB 的空闲内存,为什么系统主要使用 swap?交换文件位于 nvme 驱动器上,但内存仍然更快,那么为什么在默认 swappiness 下没有更多地使用它呢?

在此处输入图片描述

答案1

确实,尽管内存使用率很低,并且有大量可用内存,但仍会使用大量交换空间。不过,当前状态取决于使用历史。如果在会话早期,内存使用率很高,则未使用的页面将被交换到磁盘。除非再次需要这些页面,否则不会从交换空间中删除它们。如果不需要,即使大量可用内存再次可用,它们仍将保留在交换空间中。

答案2

从历史上看,2G /swapfile 从来都不够用。

让我们将您的 /swapfile 从 2G 增加到 4G,并更改您的 vm.swappiness 值...

/交换文件

笔记:错误使用rmdd命令可能会导致数据丢失。建议复制/粘贴。

在里面terminal...

sudo swapoff -a           # turn off swap
sudo rm -i /swapfile      # remove old /swapfile

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

sudo chmod 600 /swapfile  # set proper file protections
sudo mkswap /swapfile     # init /swapfile
sudo swapon /swapfile     # turn on swap
free -h                   # confirm 64G RAM and 4G swap

sudo -H gedit /etc/fstab使用或编辑 /etc/fstab sudo pico /etc/fstab

确认 /etc/fstab 中的此 /swapfile 行...并确认没有其他“交换”行...在此行中使用空格...确认没有制表符...

/swapfile  none  swap  sw  0  0

reboot                    # reboot and verify operation

vm.swappiness

由于您有这么多 RAM,请设置 vm.swappiness=10。这将减少配置中的交换。听起来您知道如何做到这一点(编辑 /etc/sysctl.conf),但如果不知道,请寻求进一步的指导。

相关内容