Swap是Linux系统中的一种虚拟内存,用于在物理内存不足时扩展可用内存。当系统的物理内存不足以满足所有运行进程的需求时,操作系统会将不常用的数据存储在Swap分区中。在某些情况下,可能需要增加Ubuntu系统上的Swap大小,以提供更多的可用内存。以下将介绍调整Swap分区大小和使用优先级的方法。
一、修改Swap分区大小步骤:
1.检查当前系统上的Swap情况。如下命令将显示当前系统上已启用的Swap分区及其大小,如果没有显示任何输出,则表示系统当前没有启用Swap。
sudo swapon --show
2.要增加Swap大小,首先需要创建一个Swap文件。例如,要创建一个大小为16GB的Swap文件,可以使用以下命令:
sudo fallocate -l 16G /swapfile
3.创建Swap文件后,需要设置适当的权限以确保只有特权用户可以访问该文件。使用以下命令设置Swap文件的权限:
sudo chmod 600 <swapfile> //注:<swapfile>是指上面创建的swapfile文件的路径
4.在设置Swap文件之前,需要对其进行格式化。使用以下命令对Swap文件进行格式化:
sudo mkswap <swapfile>
5.格式化Swap文件后,可以将其启用为系统的Swap分区。使用以下命令启用Swap文件:
sudo swapon <swapfile>
要使系统在启动时自动加载Swap文件,需要将其添加到/etc/fstab
文件中。打开/etc/fstab
文件,并在文件末尾添加以下行:
<swapfile> none swap sw 0 0
6.运行以下命令来验证Swap设置:
sudo swapon --show
在增加Swap大小时,请注意以下几点:
- 选择合适的Swap大小:根据系统的需求和可用硬盘空间,选择适当的Swap大小。一般来说,Swap的大小应该是物理内存的1到2倍,但也可以根据具体情况进行调整。
- 确保硬盘空间足够:在创建Swap文件之前,请确保系统硬盘有足够的可用空间。Swap文件的大小将占用相应的磁盘空间。
- 考虑硬盘类型:对于使用固态硬盘(SSD)的系统,Swap文件的创建和使用可能对硬盘寿命产生一定影响。在这种情况下,可以考虑将Swap分区创建在机械硬盘上,以减少对SSD的写入。
- 考虑Swap使用频率:Swap是虚拟内存,其性能远不及物理内存。因此,过多地依赖Swap可能会导致系统性能下降。如果系统频繁使用Swap,可能需要考虑增加物理内存来改善性能。
- 定期监控Swap使用情况:建议定期监控Swap的使用情况,以确保系统正常运行。可以使用
free -h
命令查看系统的内存和Swap使用情况。
二、调整Swap分区使用优先级:
调整Swap分区后,如果发现即便物理内存用光了但虚拟内存的使用率还是上不来,则需要通过修改swappiness的值来提高Swap分区的使用优先级,调整范围为0-100,值越大交换分区越优先使用,如果需要优先使用内存 则调低swappiness的值即可。ubuntu系统中swappiness默认60,centos中默认10,所以在centos中swap内存的使用率是很低的。
具体调整swappiness值的方法如下:
1.查看当前swappiness值:
cat /proc/sys/vm/swappiness
2.临时修改swappiness值(重启后还原默认值):
方法(1):sudo sysctl vm.swappiness=10
方法(2):echo 10 > /proc/sys/vm/swappiness
3.永久修改swappiness默认值(重启生效):
#编辑该文件: sudo gedit /etc/sysctl.conf #在文档的最后加上: vm.swappiness=10
swappiness值及对应策略说明:
swappiness值 | SWAP策略 |
Vm.swappiness=0 | 这会导致linux系统几乎禁用SWAP,除非出现outofMemory的情况 |
vm.swappiness=1 | 这是除禁止SWAP之外的最保守的SWAP策略 |
vm.swappiness=10 | 通常在内存空间非常充足时,为了提高整体性能,会将值更改为10,以便有效降低SWAP使用频次 |
vm.swappiness=60 | 默认值,属于中庸策略 |
vm.swappiness=100 | 系统会及其激进地进行SWAP,这会严重影响整体性能 |