背景介绍

  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,且内存的断电丢失数据也是不能把所有数据和程序都保存在内存中的原因。

  既然不能全部使用内存,那数据还有程序不可能一直霸占在内存中。当内存没有可用的,就必须要把内存中不经常运行的程序踢出去。但是踢到哪里去,这时候swap就出现了。

  Swap全称为swap place,即交换分区。当内存不够的时候,被踢出的进程被暂时存储到交换区。当需要这条被踢出的进程时,就从交换区重新加载到内存,否则它不会主动交换到真实内存中。

Swap介绍

  在详细介绍swap之前,需要知道的是计算机内存分为物理内存与虚拟内存(注意虚拟内存和虚拟地址空间的区别)。

  物理内存是计算机的实际内存大小,由RAM芯片组成。虚拟内存则是虚拟出来的、使用磁盘代替内存。虚拟内存的出现,让机器内存不够的情况得到部分解决。当程序运行起来由操作系统做具体虚拟内存到物理内存的替换和加载(相应的页与段的虚拟内存管理)。这里的虚拟内存即所谓的swap。

  当用户提交程序,然后产生进程在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调用内存运行,如果有,则直接调用内存进行;如果没有,则会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出swap扮演了一个非常重要的角色,就是暂存被换出的进程。

  内存与swap之间是按照内存为单位来交换数据的,一般Linux中页的大小设置为4Kb。而内存与磁盘则是按照来交换数据的。

Swap的设置

  从上可以看出,当物理内存使用完或者达到一定比例之后,我们可以使用swap做临时的内存使用。当物理内存和swap都被使用完那么就会出错,如:out of memory。

  对于使用多大比例内存之后开始使用swap,在系统配置文件中可以通过调整参数进行修改。

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

  该参数范围为0-100。0就是最大限度使用内存,尽量不使用swap;100是积极使用swap。

  物理内存无法更改,所以swap大小的设置将会影响应用能否正常运行。swap大小的确定,根据Centos官网介绍可以得出如下公式:

 M = Amount of RAM in GB, and S = Amount of swap in GB, then If M < , S = M * Else S = M + 

  注意:最小不应小于32M。

  Swap分区的数量对性能也有很大的影响。因为swap毕竟还是以磁盘来伪装成内存,交换的操作是磁盘IO的操作而不是内存的ioad与store操作。如果有多个swap交换区,每个swap会有一定的优先级,该优先级也可以调整。swap空间的分配会以轮流的方式操作于所有的swap,这样会大大均衡IO的负载,加快swap交换的速度

swap相关命令

[root@localhost ~]# swapon -s                   #查看当前swap的使用情况
Filename Type Size Used Priority
/dev/sda3 partition -
[root@localhost ~]# cat /proc/swaps #查看当前swap的使用情况
Filename Type Size Used Priority
/dev/sda3 partition -
[root@localhost ~]# swapoff /dev/sda3 #关闭相应的swap_disk_name
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
[root@localhost ~]# swapon /dev/sda3 #启动相应的swap_disk_name
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition -

如何增大swap空间?

# 查看当前内存
free -g # 查看交换分区使用情况
swapon -s # 创建一个分区添加交换文件,创建交换空间,然后启动新增的交换空间(1G大小)
dd if=/dev/zero of=/data0/swap bs= count=
/sbin/mkswap /data0/swap
/sbin/swapon /data0/swap # 再次查看内存情况
free -g

如何释放swap空间?

  物理内存接近饱和时,系统会自动将不常用的内存文件转储到swap中,但swap使用率达到30%的时候对系统性能可能有一定影响。

  对于较大物理内存的VPS或服务器,或根据自己服务器的情况,可以考虑手动关闭或刷新swap分区。

sync                                    # 先执行下同步
swapoff -a # 关闭swap分区
swapon -a # 开启swap分区
swapoff -a && swapon -a # 刷新swap空间,即将SWAP里的数据转储回内存,并清空SWAP里的数据。刷新原理就是把swap关闭后再重启。

转载自:

1.https://www.cnblogs.com/004x/p/6651600.html

2.https://www.cnblogs.com/madsnotes/articles/5907952.html

【转】【Linux】Swap与Memory的更多相关文章

  1. 【Linux】Swap与Memory

    背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级.所以,程序和数据如果在内存的话,会有非常快的读写速度.但是,内存的造价是要高于磁盘的,且内存的断电丢失数据也 ...

  2. 【Linux】Linux中Swap与Memory内存简单介绍

    背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...

  3. [svc]Linux中Swap与Memory内存简单介绍

    swap区域是干嘛的 cpu 内存(不常用到的进程swap区) 磁盘 当内存没有可用的,就必须要把内存中不经常运行的程序给踢出去.但是踢到哪里去,这时候swap就出现了. 背景介绍 对于Linux来说 ...

  4. Linux中Swap与Memory内存简单介绍

    1.背景介绍   这篇文章介绍一下Linux中swap与memory.对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级.所以,程序和数据如果在内存的 ...

  5. Linux中Swap与Memory内存简单介绍 (转)

    https://blog.csdn.net/zwan0518/article/details/12059213 一.背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇 ...

  6. Linux Swap交换分区介绍总结

    Swap交换分区概念   什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RA ...

  7. 我就是认真:Linux SWAP 深度解读(必须收藏)

    我就是认真:Linux SWAP 深度解读(必须收藏) http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097& ...

  8. Linux Swap交换分区探讨

    Swap交换分区概念 Linux divides its physical RAM (random access memory) into chucks of memory called pages. ...

  9. 怎么设置Linux swap分区?方法教程

    如何设置Linux swap分区 看到不少朋友问linux下swap分区的问题,收集到一篇 不错的文章 ,分享下. 什么是Swap?Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其 ...

  10. 如何设置Linux swap分区

    看到不少朋友问linux下swap分区的问题,收集到一篇 不错的文章 ,分享下.什么是Swap?Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器 ...

随机推荐

  1. Linux中断管理

    CPU和外设之间的交互,或CPU通过轮询机制查询,或外设通过中断机制主动上报. 对大部分外设中断比轮询效率高,但比如网卡驱动采取轮询比中断效率高. 这里重点关注ARM+Linux组合下中断管理,从底层 ...

  2. devmem读写物理内存和devkmem读取内核虚拟内存

    关键词:/dev/mem./dev/kmem.mmap.__va.__pa.remap_pfn_range等等. 在日常工作中常有直接操作寄存器或者某一物理地址的需求,busybox中提供了devme ...

  3. iOS开发基础篇-transform属性

    一. transform 属性 在OC中,通过 transform 属性可以修改对象的平移.缩放比例和旋转角度. 1)创建“基于控件初始位置”的形变  CGAffineTransformMakeRot ...

  4. 单机部署 ELK

    对于一个体量不大的系统,运行在单机上的 ELK 就足以胜任日志的处理任务了.本文介绍如何在单台服务器上安装并配置 ELK(elalasticsearch + logstash + kibana),并最 ...

  5. 小议SQL数据插入

    --数据插入操作:INSERT INTO user_info(username,age) VALUES('ZHANGSAN',20);INSERT INTO user_info(username,ph ...

  6. PS调出唯美紫蓝色天空背景女生照片

    教你学会用PS给照片叠加素材,达到想要的效果. 首先,作为摄影在拍摄前,我们要明白自己拍摄主题与目的,希望后期达到的效果,尤其是当我们需要后期叠加素材时,脑海中自然而然会有大致画面,就以“夏日”这组为 ...

  7. Python——Flask框架——程序的结构

    一.项目结构 |-flasky |-app Flask程序一般都保存在这里 |-templates/ |-static/ |main/ |-__init__.py |-errors.py |-form ...

  8. linux 命令mkdir、cd

    mkdir 创建文件夹 -p 递归创建文件夹 可以一次性创建多个目录 cd pwd 显示当前目录的绝对路径 rmdir  删除空目录  只能删除空目录  鸡肋,基本用rm cp  复制文件产品 -r ...

  9. git安装和GitHub使用

    一.git安装 1.git下载 https://github.com/git-for-windows/git/releases/tag/v2.17.1.windows.2 在如上地址下载git,并安装 ...

  10. UOJ10 UTR #1 pyx的难题(堆)

    显然优先级越高完成的越早,二分答案后用堆模拟就是O(nlog2n)的.考虑去一个log.先固定特殊题的优先级为最低,模拟一遍.这样在特殊题被扔过来到T的这段时间内,如果将特殊题的优先级提高至超过这其中 ...