swap交换分区 创建 自动挂载 扩展 swappiness参数调整教程

swap交换分区

swap交换分区 创建 自动挂载 扩展

一、什么是swap交换分区?

定义:

Swap space交换空间,是虚拟内存的表现形式。系统为了应付一些需要大量内存的应用,而将磁盘上的空间做内存使用,当物理内存不够用时,将其中一些暂时不需要的数据交换到交换空间,也叫交换文件或页面文件中


理解

我们知道Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存),常用的就是buffer cache和page cache。即使你的程序运行结束后,Cache Memory也不会自动释放。


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


二、swap文件创建规则

参照oracle官方文档设定的标准应这样配置:


4G以内的物理内存,SWAP 设置为内存的2倍。

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

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

64-256G物理内存,SWAP 设置为16G。


三、创建swap文件

安装操作系统分区时需创建swap分区。

  1. 查看内存情况

    如果swap行为0,需要创建swap空间。


  2. 创建swap分区

    dd if=/dev/zero of=/tmp/swapfile bs=1024 count=8192000

    if=/dev/zero:输入/dev/zero文件。/dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件。

    of=/tmp/swapfile:输出至/tmp/swapfile文件

    bs=1024:定义块大小为1024bytes,默认单位为bytes。

    count=8192000:总数大小8192000个bs即8192000kb,换算后得8G。


  3. 指定分区类型为swap

    mkswap /tmp/swapfile


  4. 设置swap分区有效

    swapon /tmp/swapfile


  5. 设置扩展的swap分区为自动挂载


    Vim /etc/fstab

    添加自动挂载分区命令


    /tmp/swapfile swap swap defaults 0 0


  6. 测试添加情况

    Free -m



四、扩展swap文件

程序运行时频频因为内存过小问题自动自杀,可手动扩展swap大小。 扩展方式: 

  1. 先将swap关闭。Swapoff -a

  2. 安装三的步骤重新分配swap文件,重新加载swap分区。


五、swappiness参数

Swappiness是关于swap使用率的参数,swappiness的值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。默认值swappiness=60。


当swap使用率配置过大影响到了磁盘使用,可以将此值适当减小直至配置为0。当磁盘空间io空闲较大,物理内存负载较高时可以将此值逐渐增大直至100。


1、临时调整Swappiness参数

sudo sysctl vm.swappiness = 100

cat /proc/sys/vm/swappiness

2、永久调整Swappiness参数

sudo vim /etc/sysctl.conf

修改


vm.swappiness=10

然后执行命令:


sudo sysctl -p