📑 文章章节大纲 (点击平滑直达)
介绍在 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