在 Linux 系统中(如deepin),Swap(交换分区)是一种重要的资源管理机制,用于在物理内存不足时,将部分内存中的数据交换到磁盘空间,从而避免系统因内存耗尽而崩溃(OOM,Out of Memory)。合理配置和管理 Swap 分区对于系统的稳定性和性能至关重要。本文将详细介绍 Swap 分区的作用、配置方法以及相关参数的调整。
- Swap 分区的作用
当系统的物理内存(RAM)不足以满足当前运行的程序需求时,Linux 内核会将部分不常用的内存页面(通常是匿名页面,如程序的堆栈空间)交换到磁盘上的 Swap 分区。这样可以释放内存空间,供其他程序使用。虽然 Swap 分区的读写速度远低于物理内存,但它可以作为内存的补充,防止系统因内存不足而崩溃。 - 调整 Swap 使用策略
Linux 系统通过 /proc/sys/vm/swappiness 文件来控制内核对 Swap 分区的使用策略。swappiness 参数的取值范围是 0 到 100,其默认值通常为 60。
值越高:内核越积极地使用 Swap 分区。
值越低:内核会尽量减少对 Swap 分区的使用,优先通过清理缓存来回收内存。
值为 0:内核仅在物理内存和文件缓存的总可用量低于高水位标记(high watermark)时,才会使用 Swap 分区。
值为 100:内核在回收内存时,会同等优先地从缓存和 Swap 分区中回收内存。 - 查看和调整 swappiness 参数
查看当前的 swappiness 参数值:
cat /proc/sys/vm/swappiness
临时调整 swappiness 参数值(例如设置为 10):
echo 10 > /proc/sys/vm/swappiness
永久调整 swappiness 参数值,需要编辑 /etc/sysctl.conf 文件:
sudo nano /etc/sysctl.conf
在文件中添加或修改以下内容:
vm.swappiness = 10
保存文件后,运行以下命令使配置生效:
sudo sysctl -p - 管理 Swap 分区
创建和启用 Swap 分区
创建 Swap 文件
如果没有 Swap 分区,可以创建一个 Swap 文件。例如,创建一个大小为 2GB 的 Swap 文件:
sudo fallocate -l 2G /swapfile
设置权限
为了安全起见,设置 Swap 文件的权限,使其只能被 root 用户访问:
sudo chmod 600 /swapfile
格式化 Swap 文件
将文件格式化为 Swap 类型:
sudo mkswap /swapfile
启用 Swap 文件
启用 Swap 文件:
sudo swapon /swapfile
永久启用 Swap 文件
编辑 /etc/fstab 文件,添加以下内容以确保 Swap 文件在系统启动时自动启用:
/swapfile swap swap defaults 0 0
查看 Swap 使用情况
查看当前 Swap 分区的使用情况:
swapon -s
或者查看更详细的信息:
cat /proc/swaps
调整 Swap 优先级
可以为不同的 Swap 分区设置优先级,优先级越高,内核越优先使用该 Swap 分区。优先级范围是 -1 到 32767。例如,设置优先级为 10:
sudo swapon -p 10 /swapfile - 关闭 Swap 分区
如果需要临时关闭所有 Swap 分区,可以运行:
sudo swapoff -a
重新启用所有 Swap 分区:
sudo swapon -a - 系统内存水位标记
Linux 内核通过内存水位标记(watermark)来决定何时开始回收内存。水位标记分为低水位(low watermark)和高水位(high watermark)。当剩余内存低于低水位时,内核开始回收内存,直到剩余内存达到高水位。
查看当前系统的内存水位标记:
cat /proc/zoneinfo - 总结
合理配置和管理 Swap 分区对于 Linux 系统的稳定性和性能至关重要。通过调整 swappiness 参数,可以控制内核对 Swap 分区的使用策略,从而优化系统性能。同时,通过创建和管理 Swap 文件,可以灵活地扩展系统的虚拟内存。希望本文能帮助你更好地理解和管理 Linux 系统中的 Swap 分区。
支持ing
阅读更多
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。