美文网首页Linux
Linux服务器 swap虚拟内存

Linux服务器 swap虚拟内存

作者: Habit_1027 | 来源:发表于2021-05-25 11:24 被阅读0次

    一、linux的内存机制

    我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。 物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。 作为物理内存的扩展,linux会在物理内存不足时,使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。 Linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存

    二、Linux什么时候开始使用虚拟内存(swap)

    cat /proc/sys/vm/swappiness命令可以看到设定的阀值

    [root@localhost ~]# cat /proc/sys/vm/swappiness
    30
    [root@localhost ~]# 
    

    发现值为30,上面这个30代表物理内存在使用30%的时候才会使用swap。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。swap分区设置建议是内存的两倍 (内存小于等于4G时),如果内存大于4G,swap只要比内存大就行。另外尽量的将swappiness调低,这样系统的性能会更好

    我们把这个阈值设到70%看一下

    [root@localhost ~]# vi /etc/sysctl.conf
    vm.swappiness = 70  #加入这一行
    [root@localhost ~]# sysctl -p
    [root@localhost ~]# cat /proc/sys/vm/swappiness
    70
    [root@localhost ~]# 
    

    三、增加虚拟内存(swap)

    3.1查看内存
    [root@localhost ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.7G         94M        131M        608K        1.5G        1.4G
    Swap:            0B          0B          0B
    
    
    3.2用dd命令创建一个新增内存大小的文件,如4GB
    [root@localhost ~]# dd if=/dev/zero of=/var/swapfile1 bs=4096 count=1048576
    1048576+0 records in
    1048576+0 records out
    4294967296 bytes (4.3 GB) copied, 35.3405 s, 122 MB/s
    [root@localhost ~]# 
    
    3.3将新增文件设为Swap交换分区
    [root@localhost ~]# mkswap /var/swapfile1 
    Setting up swapspace version 1, size = 4194300 KiB
    no label, UUID=d75f1aa3-88c3-4481-a30a-0cb21ee2c8a2
    [root@localhost ~]# 
    
    3.4激活并使用/var/swapfile1交换分区
    [root@localhost ~]# swapon /var/swapfile1 
    swapon: /var/swapfile1: insecure permissions 0644, 0600 suggested.
    [root@localhost ~]# 
    
    3.5设置系统启动后自动激活交换分区
    # /etc/fstab
    # Created by anaconda on Thu Jul 11 02:52:01 2019
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=1114fe9e-2309-4580-b183-d778e6d97397 /                       ext4    defaults        1 1
    
    #新增的swap分区
    /var/swapfile1  swap   swap  defaults  0  0
                                              
    
    3.6重启服务器 查看内存
    [root@localhost ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.7G         95M        1.4G        432K        227M        1.5G
    Swap:          4.0G          0B        4.0G
    [root@localhost ~]# 
    

    四、释放内存

    一般系统是不会自动释放内存的
    关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:

    0 – 不释放
    1 – 释放页缓存
    2 – 释放dentries和inodes
    3 – 释放所有缓存
    [root@localhost ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.7G         95M        1.4G        432K        227M        1.5G
    Swap:          4.0G          0B        4.0G
    [root@localhost ~]# echo 3 >/proc/sys/vm/drop_caches 
    [root@localhost ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.7G         95M        1.6G        432K         72M        1.5G
    Swap:          4.0G          0B        4.0G
    [root@localhost ~]# 
    
    

    五、释放swap

    前提:首先要保证内存剩余要大于等于swap使用量,否则会宕机!根据内存机制,swap分区一旦释放,所有存放在swap分区的文件都会转存到物理内存上。通常通过重新挂载swap分区完成释放swap

    5.1 查看当前swap分区挂载在哪里
    [root@localhost ~]# swapon -s
    Filename                Type        Size    Used    Priority
    /var/swapfile1                          file    4194300 0   -2
    [root@localhost ~]# 
    
    5.2 关闭这个分区并查看挂载状态已经内存
    [root@localhost ~]# swapoff /var/swapfile1 
    [root@localhost ~]# 
    [root@localhost ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.7G         92M        1.5G        432K         84M        1.5G
    Swap:            0B          0B          0B
    [root@localhost ~]# swapon -s
    [root@localhost ~]# 
    
    
    5.3重新挂载并查看
    [root@localhost ~]# swapon /var/swapfile1
    swapon: /var/swapfile1: insecure permissions 0644, 0600 suggested.
    [root@localhost ~]# swapon -s
    Filename                Type        Size    Used    Priority
    /var/swapfile1                          file    4194300 0   -2
    [root@localhost ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.7G         94M        1.5G        432K         86M        1.5G
    Swap:          4.0G          0B        4.0G
    [root@localhost ~]# 
    
    

    相关文章

      网友评论

        本文标题:Linux服务器 swap虚拟内存

        本文链接:https://www.haomeiwen.com/subject/vvpqsltx.html