• linux中的交换分区(swap)及优化


    SWAP(交换内存)

    1、什么是交换内存?

    在硬盘上创建一块区域,当你的物理内存快要被用光的时候,内核临时的

    物理内存上的文件数据交换到硬盘上的这段区域上面,当物理内存有闲置的时候

    在把交换内存上的数据调回到物理内存上的。可能在大多数时候,你会发现你的

    交换内存没有被用到,为什么我们的系统在安装的时候强制我们要建立交换内存?

    牺牲一定的硬盘空间,给操作系统买份保险!

    2、创建交换内存:

       创建的步骤:

    1、 创建新分区,并且更改分区标识符号为82.

    或者在本机上使用dd命令创建一个虚拟文件。

    2、 使用mkswap对指定设备制作交换内存文件系统。

    3、 swapon开启交换内存

    (但是非常遗憾,下次启动机器的时候仍然需要手动使用swapon手动开启)建议直接写入到/etc/fstab中

    4、 查看free  -m   ,swapon  -s进行查看  

    分区类型交换内存:速度快、独立分区

    1、fdisk  /dev/sdb

       n     t    82          

    #partprobe  /dev/sdb          //重新加载分区表

    2、制作swap

     # mkswap  /dev/sdb7          //以sdb7为例

    3、/etc/fstab

      /dev/sdb7    swap  swap   defaults  0  0     //永久挂载格式

    UUID=XXXXXX   swap  swap  defaults  0  0     //生产环境blkid查看文件系统UUID

    # swapon  -a

    4、查看:

    # free  -m

    # swapon  -s

     文件类型的交换内存:相对速度慢、比较灵活

    1、创建虚拟文件:

       # dd  if=/dev/zero  of=/tmp/swap-file1  bs=1M  count=N   //N为正整数

    2、制作swap文件系统

       # mkswap  /tmp/swap-file1

    3、挂载使用/etc/fstab

       /tmp/swap-file1  swap  swap  defaults 0 0

     # swapon  -a

    4、查看:

    # free  -m

    # swapon  -s

     

    交换内存的优化及人为干预

    交换内存的调优:

     

    可调参数:/proc/sys/vm/swappiness

     

    当系统非常需要使用内存时,内核会把匿名内存(Anonymous memory)和System V的共享内存(shared memory)交换到磁盘上去,而真正的文件不需要交换到交换内存上去,而是直接写会到磁盘文件系统上(清掉page cache)。

    调低/proc/sys/vm/swappiness时,核心倾向于不交换,主要用于快的响应速度。如:apache

    调高/proc/sys/vm/swappiness时,核心倾向于使用交换内存,主要用于繁忙的吞吐量。如:文件服务器

     

    内核尝试去检查一个参数swap_tendency:

    Swap_tendency  < 100,内核会尽量的从page cache中做回收(写回page cache)

    Swap_tendency  >=100,内核会尽量交换匿名内存和共享内存。

    Swap_tendency = mapped_ratio/2  + distress + vm_swappiness(swap_tendency计算公式)

    ● mapped_ration : 物理内存的使用百分比。

     distress : 内核尝试释放物理内存的难易程度0-100(page  cache回收的难易程度)。distress悲痛;危难

    vm_swappiness:是我们可以通过/proc/sys/vm/swappiness内核参数调节的值。

    可以看出我们可以人为的干预交换内存的交换,但无法准确控制因为有distress参数

     

    交换内存的优化:

    使用多个磁盘做raid0

    ● 使用SSD设备

    ● 2.6内核开始交换文件和交换分区,速度上区别不太只要文件没有太多碎片。

    ● 当挂载交换分区或文件时,每新加一个交换设备优先级比前一个要低一些(优先级高的被先用到)。可以使用 pri=values来指定挂载优先级。

       如果要使用多个交换分区来轮询(round-robin),那么多个交换分区使用相同的优先级。

    交换内存设置为多大?

    docs.redhat.com

     

    如何设置优先级:

    /dev/sdb7     swap   swap  defaults,pri=5   0   0

    /dev/sdc6     swap   swap   defaults,pri=5  0   0  

  • 相关阅读:
    Java常量初始化后不会再去重新获取
    Intellij IDEA自动编译问题
    Tomcat关闭日志输出
    MySQL命令行导出数据库
    补充Mysql5.7用法
    Linux下安装 mysql 5.7
    IE9 表格错位bug
    Ubuntu忘记管理员密码
    实体转换计算器
    js生成二维码参数设置
  • 原文地址:https://www.cnblogs.com/qxfy/p/12027555.html
Copyright © 2020-2023  润新知