【Linux】Linux Swap详解

admin / Linux / / 658 字 · 约 3 分钟 / 474 次阅读 /

介绍在 Linux 下,swap 的作用类似 Windows 系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当 SWAP 分区(虚拟成内存)使用,从而解决内存容量不足的情况。

swap 意思是交换,顾名思义,当某进程向 OS 请求内存发现不足时,OS 会把内存中暂时不用的数据交换出去,放在 swap 分区中,这个过程称为 SWAP OUT。当某进程又需要这些数据且 OS 发现还有空闲物理内存时,又会把 swap 分区中的数据交换回物理内存中,这个过程称为 SWAP IN。

当然,swap 大小是有上限的,一旦 swap 使用完,操作系统会触发 OOM-Killer 机制,把消耗内存最多的进程 kill 掉以释放内存。

swap 阈值设定

swap 阈值的设定意义是物理内存使用多少时,就使用 swap 交换分区。

查看当前系统 swap 阈值.

cat /proc/sys/vm/swappiness

20,如上面得到的阈值,就表示 内存在使用到 100-20=80%的时候,就开始使用 swap 交换分区

两个极限值设定:

  • 当 swappiness 设置为 0 时,表示最大限度使用物理内存, 所有物理内存都用完后,才使用 swap 空间。
  • 当 swappiness 设定为 100 时,表示积极使用 swap 分区,并且把内存上的数据及时的搬运到 swap 空间中。

临时设定:

sudo sysctlvm.swappiness=10

永久设定:

echo "vm.swappiness=10" >> /etc/sysctl.conf
sudo sysctl -p
cat /proc/sys/vm/swappiness

创建 swap 分区:

创建一个 4G 的文件作为 swap 分区

dd if=/dev/zero of=swapfile bs=1M count=4096
# 每个块大小为1M,数量为4096个,则总大小为4G的文件。

格式化成 swap 分区

mkswap swapfile

挂载 swap 文件

swapon swapfile

开机自动挂载

vim /etc/fstab (在 fstab 中增加一条记录如下)

/opt/swapfile swap swap defaults 0 0

关闭 swap 分区

admin

admin

云原生架构 · 全栈开发

感谢阅读本文!记录系统架构思考与实战复盘。专注于 Python、Django、PostgreSQL 与云原生容器化工程实践。