swap - TuPengXiong/TuPengXiong.github.io GitHub Wiki

Swap 分区

  • Swap交换分区概念

    1. Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。

    2. 关于Swap分区,其实我们有很多疑问,如果能弄清楚这些疑问,那么你对Swap的了解掌握就差不多了。如何查看Swap分区大小? Swap分区大小应该如何设置?系统在什么时候会使用Swap分区? 是否可以调整? 如何调整Swap分区的大小?Swap分区有什么优劣和要注意的地方? Swap分区是否必要?那么我一个一个来看看这些疑问吧!

  • 查看分区大小

root@992677227c43:/# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         126        1506         154         346        1533
Swap:          1023
root@992677227c43:/# swapon -s
Filename                                Type            Size    Used    Priority
/var/spool/swap                         file            1048572 0       -1
root@992677227c43:/# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/var/spool/swap                         file            1048572 0       -1
  • Swap分区大小设置
4G以内的物理内存,SWAP 设置为内存的2倍。

4-8G的物理内存,SWAP 等于内存大小。

8-64G 的物理内存,SWAP 设置为8G。

64-256G物理内存,SWAP 设置为16G。
  • 关闭交换分区
swapoff /var/spool/swap
  • 创建分区
通过dd命令增加swap
dd if=/dev/zero of=/var/swap bs=1024 count=2048000
创建swap文件
mkswap /var/swap
加载该文件
swapon /var/swap
  • 修改/etc/fstab使其启动时自动mount:
  1. 在/etc/fstab中增加如下语句:
/var/swap  swap  swap    defaults 0 0
  • 设置内存剩余多少的时候使用 swap分区内存
  1. 临时修改
sysctl vm.swappiness=10
  1. 永久修改
vim /etc/sysctl.conf

修改设置内存剩余10% 使用swapp分区 
vm.swappiness = 10
  1. 查看
cat /proc/sys/vm/swappiness