Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • 操作系统

    • 学习笔记

      • 鸟哥的Linux私房菜学习笔记01-计算机概论
      • 鸟哥的Linux私房菜学习笔记02-磁盘分区
      • 鸟哥的Linux私房菜学习笔记03-日志文件
      • 寄存器
      • 汇编语言
      • 零拷贝
      • 内存管理单元MMU
      • 内存管理基础知识
      • 文件系统
      • 系统调用
      • 写时复制
      • 虚拟地址
      • 虚拟内存
      • 中断
      • CPU
      • DMA
      • mmap
      • Swap分区
      • Shell

      • Linux命令

      • RAID分类详解
      • Page Cache与Page回写
      • 磁盘IO与swap分区
    • 计算机网络

    • 数据结构和算法

    • MySQL

    • Redis

    • Nginx

    • MongoDB

    • 其他

    • 计算机基础
    • 操作系统
    • 学习笔记
    Ravior
    2019-02-05
    目录

    Swap分区

    众所周知,直接从物理内存(RAM)读写数据要比从硬盘(Desk)读写数据要快的多,但是内存大小是有限的,为了解决物理内存不足的问题,操作系统引入了虚拟内存的概念。

    虚拟内存是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。

    作为物理内存的扩展,内核会在物理内存不足时,会将暂时不用的内存块信息写到交换空间,这样物理内存得到了释放,当需要用到交换空间的数据时,又会被重新从交换空间读到物理内存。

    Linux内核是以内存页为单位进行内存管理,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。

    # swappniess

    swappiness是Linux的一个内核参数,控制系统在进行swap时内存使用的相对权重。以下命令查看当前swappniess配置:

    cat /proc/sys/vm/swappiness
    
    1

    swappiness参数值可设置范围在0到100之间。 此参数值越低,就会让Linux系统尽量少用swap分区,多用内存。swappiness=0的时候表示最大限度使用物理内存(设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性),然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

    Ubuntu系统swappiness默认值为60,表示的含义可以这样来理解,当剩余物理内存低于40%(40=100-60)时,开始使用swap分区。CentOS系统此参数的默认值是30。

    通常情况下:swap分区设置建议是内存的两倍 (内存小于等于4G时),如果内存大于4G,swap只要比内存大就行。另外尽量的将swappiness调低,这样系统的性能会更好。

    # 修改swappniess参数

    #临时性修改:
    sysctl vm.swappiness=10
    
    #永久性修改[root@wenwen ~]
    vim /etc/sysctl.conf
    # 加入参数
    vm.swappiness = 35
    # 重新加载配置
    sysctl -p /etc/sysctl.conf
    #查看是否生效:
    cat /proc/sys/vm/swappiness
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    # swap分区设置

    # 查看swap分区的使用情况

    在linux系统中,通常使用free -m来查看内存和swap分区的使用情况。

    root@Devops:~$ free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3823        1152         241          39        2428        2318
    Swap:             0           0           0
    
    1
    2
    3
    4

    其中 swap 表示交换分区使用情况。

    # 创建swap分区

    #创建 SWAP 文件,设置大小,这里设置为 1G。(bs * count = SWAP 大小)
    dd if=/dev/zero of=/var/swap bs=1M count=1024
    # 设置文件权限
    chmod 600 /var/swap
    # 创建 SWAP
    mkswap /var/swap
    # 启用
    swapon /var/swap
    # 查看 SWAP 状态
    swapon -s 或者 free -m
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    查看 SWAP 状态:

    root@Devops:~$ swapon -s
    Filename				Type		Size	Used	Priority
    /var/swap                              	file    	1048572	0	-1
    
    1
    2
    3

    添加开机启动:

    # 在 /etc/fstab 中添加一行 /var/swap swap swap default 0 0
    echo '/var/swap   swap   swap   default 0 0' >> /etc/fstab
    
    1
    2

    删除Swap:

    删除swap之前先要确保内存剩余要大于等于swap使用量,否则会宕机!根据内存机制,swap分区一旦释放,所有存放在swap分区的文件都会转存到物理内存上。

    # 先停用
    swapoff /var/swap
    #再删除
    rm -rf /var/swap
    # 去掉开机启动
    sed -i '/\/var\/swap   swap   swap   default 0 0/d'  /etc/fstab
    
    1
    2
    3
    4
    5
    6
    #操作系统
    上次更新: 2022/12/01, 11:09:34
    mmap
    Shell基础入门

    ← mmap Shell基础入门→

    最近更新
    01
    常用游戏反外挂技术总结
    11-27
    02
    Golang开发实践万字总结
    11-11
    03
    Redis万字总结
    10-30
    更多文章>
    Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式