Ubuntu 添加虚拟内存文件
添加交换文件
-
准备工作
查看当前系统中启用的交换空间(swap space)的详细信息:
sudo swapon --show
查看系统的内存和总交换空间的使用情况:
free -h
为了有足够的空间创建交换文件,可以在创建前先查看磁盘剩余空间:
df -h
其中挂载在
/
下的磁盘是我们将要用来存放交换文件的磁盘。 -
创建一个空文件:
sudo fallocate -l 4G /swapfile
文件的大小根据你的使用情况而定。如果你需要使用休眠功能,则建议总虚拟内存大小为物理内存大小 2 倍。如果不需要使用休眠功能,则总虚拟内存为物理内存大小 1 倍即可。
-
将空文件配置为交换空间:
sudo chmod 600 /swapfile # 确保文件访问权限正确 sudo mkswap /swapfile # 将文件标记为交换文件
-
启用交换空间:
sudo swapon /swapfile
验证交换空间已启用:
sudo swapon --show # 查看交换空间详细信息 free -h # 查看内存和总交换空间的使用情况
如果想要在开机时自动启用交换文件,编辑文件系统表
/etc/fstab
,在文件末尾添加一行交换文件信息:/swapfile none swap sw 0 0
删除交换文件
-
禁用并删除交换文件:
sudo swapoff /swapfile # 禁用交换文件 sudo rm /swapfile # 删除交换文件
-
如果在
/etc/fstab
中添加了自动挂载设置,则需要移除对应的配置行:/swapfile none swap sw 0 0 # 删除这一行
-
验证交换空间是否已删除
sudo swapoff --show
高级设置
高级设置一般不用管
调整交换频率
查看当前交换频率:
cat /proc/sys/vm/swappiness
0
:尽量不使用交换空间,内存压力大。1
:尽量使用交换空间,内存压力小。
调整交换频率:
sudo sysctl vm.swappiness=10
为了永久修改交换频率,我们需要编辑系统内核参数配置文件 /etc/sysctl.conf
,在文件末尾加入一行:
vm.swappiness=10
调整缓存压力设置
查看缓存压力:
cat /proc/sys/vm/vfs_cache_pressure
该数值表示系统在多大程度上选择缓存 inode
和 dentry
信息,而不是其他数据。 inode
和 dentry
是有关文件系统的访问数据,一般来说,这些数据的查询成本很高,而且请求频率也很高,因此建议尽量不缓存这些数据。
调整缓存压力:
sudo sysctl vm.vfs_cache_pressure=50
同样,为了永久修改缓存压力设置,需要编辑系统内核参数配置文件 /etc/sysctl.conf
,在文件末尾加入一行:
vm.vfs_cache_pressure=50
参考:How To Add Swap Space on Ubuntu 22.04 | Digital Ocean Tutorials