【Linux】Swap与Memory

【Linux】Swap与Memory

背景介绍

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

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

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

Swap介绍

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

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

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

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

Swap的设置

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

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

1 [[email protected] ~]# cat  /proc/sys/vm/swappiness
2 60

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

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

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

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

  

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

swap相关命令  

 1 [[email protected] ~]# swapon -s                   #查看当前swap的使用情况
 2 Filename                Type        Size    Used    Priority
 3 /dev/sda3                               partition    2064376    0    -1
 4 [[email protected] ~]# cat /proc/swaps           #查看当前swap的使用情况
 5 Filename                Type        Size    Used    Priority
 6 /dev/sda3                               partition    2064376    0    -1
 7 [[email protected] ~]# swapoff /dev/sda3       #关闭相应的swap_disk_name
 8 [[email protected] ~]# swapon -s
 9 Filename                Type        Size    Used    Priority
10 [[email protected] ~]# swapon /dev/sda3        #启动相应的swap_disk_name
11 [[email protected] ~]# swapon -s
12 Filename                Type        Size    Used    Priority
13 /dev/sda3                               partition    2064376    0    -1

  

参考资料:

虚拟内存介绍:虚拟内存介绍

Linux内存介绍:http://blog.csdn.net/zwan0518/article/details/9040467

centos swap :http://www.centos.org/docs/5/html/5.1/Deployment_Guide/s1-swap-what-is.html

【Linux】Linux中Swap与Memory内存简单介绍:http://blog.csdn.net/zwan0518/article/details/12059213

原文地址:https://www.cnblogs.com/aspirant/p/9682514.html

时间: 2024-11-09 17:40:47

【Linux】Swap与Memory的相关文章

Linux swap分区 新建添加与增加扩大 转自网络

来源网络 恶之一眉版权归属 安装完Linux系统后,swap分区太小怎么办,怎么可以扩大Swap分区呢?有两个办法,一个是从新建立swap分区,一个是增加swap分区.下面介绍这两种方法: 第一您必须有root权限,过程中一定要很小心,一不小心就破坏了整个硬盘的数据,执行下面的过程之前您需要三思而行,错误操作后的后果由执行者自己承担. 切记!!!切记!!!切记!!!设备名 盘符要按自己实际输入例如/dev/sda sda1 /dev/sdb sdb1 sdb2等等 否则损失数据自己负责啊````

如何设置Linux swap分区

看到不少朋友问linux下swap分区的问题,收集到一篇 不错的文章 ,分享下.什么是Swap?Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要.通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用.Swap的原理是一个较复杂的问题,需要大量的篇幅来说明.在这里只作简单的介绍,在以后的文章中将和大家详细讨论Swap实现的细节.众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理

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

如何设置Linux swap分区 看到不少朋友问linux下swap分区的问题,收集到一篇 不错的文章 ,分享下. 什么是Swap?Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要.通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用.Swap的原理是一个较复杂的问题,需要大量的篇幅来说明.在这里只作简单的介绍,在以后的文章中将和大家详细讨论Swap实现的细节.众所周知,现代操作系统都实现了“虚拟内

Linux SWAP 交换分区配置说明(转)

一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中.这样,系统总是在物理内存不够时,才进行Swap交换. 这个是SWAP 交换分区的作用. 实际上,我们更关注的应该是SWAP分区的大小问题. 设置多大才是最优的. 一般来说可以按照如下规则设置swap大小

Linux SWAP 交换分区配置说明

一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中.这样,系统总是在物理内存不够时,才进行Swap交换. 这个是SWAP 交换分区的作用. 实际上,我们更关注的应该是SWAP分区的大小问题. 设置多大才是最优的. 一般来说可以按照如下规则设置swap大小

linux swap空间的swappiness=0

linux swap空间的swappiness=0 http://blog.csdn.net/wulantian/article/details/36184943

创建Linux swap

创建SWAP文件(下面指定的是8G容量,系统物理内存8G): dd if=/dev/zero of=/data/swapfile bs=1M count=8192 格式化该文件 mkswap swapfile 加载为swap swapon swapfile 查看swap情况: free -m 结果: Swap:         8191          0       8191 在/etc/fstab中加入启动配置: /data/swapfile          swap         

linux swap分区修改的2种方式

参考网站:http://blog.csdn.net/hshl1214/article/details/6048278 原帖子写的很好,我把步骤给贴出来,测试系统:rhel6.4 x64 1.新建磁盘分区作为swap分区 [[email protected] /]# free -m  //查看当前swap信息             total       used       free     shared    buffers     cachedMem:          1878     

Linux &nbsp; swap/home/root分区 大小 &nbsp; 调整

周氏一族,整理技术文档,给下一代留点教程...... 采用系统默认最下化安装的同学都知道,基本上home的分区大得要命,可现实中,我们home不需要那么大,我们的大部分数据是放在 / 目录下,因此需要调整大小,不然在生产环境当中,容易导致硬盘分区溢出,没有写入权限. 先来看看我的硬盘分区和大小情况,很明显,这是一块600G的硬盘,但是我root只有53.7G,swap只有16.9G,可是home竟然有529G 1.减少home分区大小 umount /home resize2fs -p /dev