【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,在系统配置文件中可以通过调整参数进行修改。
[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 -
参考资料:
虚拟内存介绍:虚拟内存介绍
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
【Linux】Swap与Memory的更多相关文章
- 【Linux】Linux中Swap与Memory内存简单介绍
背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...
- [svc]Linux中Swap与Memory内存简单介绍
swap区域是干嘛的 cpu 内存(不常用到的进程swap区) 磁盘 当内存没有可用的,就必须要把内存中不经常运行的程序给踢出去.但是踢到哪里去,这时候swap就出现了. 背景介绍 对于Linux来说 ...
- Linux中Swap与Memory内存简单介绍
1.背景介绍 这篇文章介绍一下Linux中swap与memory.对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级.所以,程序和数据如果在内存的 ...
- Linux中Swap与Memory内存简单介绍 (转)
https://blog.csdn.net/zwan0518/article/details/12059213 一.背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇 ...
- Linux Swap交换分区介绍总结
Swap交换分区概念 什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RA ...
- 我就是认真:Linux SWAP 深度解读(必须收藏)
我就是认真:Linux SWAP 深度解读(必须收藏) http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097& ...
- Linux Swap交换分区探讨
Swap交换分区概念 Linux divides its physical RAM (random access memory) into chucks of memory called pages. ...
- 怎么设置Linux swap分区?方法教程
如何设置Linux swap分区 看到不少朋友问linux下swap分区的问题,收集到一篇 不错的文章 ,分享下. 什么是Swap?Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其 ...
- 如何设置Linux swap分区
看到不少朋友问linux下swap分区的问题,收集到一篇 不错的文章 ,分享下.什么是Swap?Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器 ...
随机推荐
- jQuery使用(一):jQuery对象与选择器
一.简单的一些介绍 1.jQuery是由普通的是由一些系列操作DOM节点的函数和一些其他的工具方法组成的js库. 2.为什么要使用jQuery库? jQuery面向用户良好的设计在使用过程中彻底解放了 ...
- HDU 1021(斐波那契数与因子3 **)
题意是说在给定的一种满足每一项等于前两项之和的数列中,判断第 n 项的数字是否为 3 的倍数. 斐波那契数在到第四十多位的时候就会超出 int 存储范围,但是题目问的是是否为 3 的倍数,也就是模 3 ...
- PHP7 学习笔记(十一)使用phpstudy快速配置一个虚拟主机
说明:为了windows本地开发php方便,这里推荐使用PHP集成环境phpstudy. 目的:使用域名访问项目(tinywan.test) 1.官网:http://www.phpstudy.net ...
- HTTP.SYS远程执行代码漏洞分析 (MS15-034 )
写在前言: 在2015年4月安全补丁日,微软发布了11项安全更新,共修复了包括Microsoft Windows.Internet Explorer.Office..NET Framework.S ...
- Android设置shape后改变颜色
如下,可能多个btn的设置同一个shape,如果单独改变btn颜色,可以用如下代码 GradientDrawable btnPreDrawable = (GradientDrawable) btnTe ...
- 【noip 2012】提高组Day2T3.疫情控制
Description H国有n个城市,这n个城市用n-1条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点. H国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到边境 ...
- python随机数random模块
需要 import random x=random.random() 产生 0 到 1 之间的随机浮点数 结果 0.005570080000840916 x=random.randint(1 ...
- spring和mybatis的整合开发(传统Dao开发方式)
spring和mybatis整合开发有三种整合方式1.传统DAO方式的开发整合(现在基本上不会用这种方式了,不推荐使用这种方式),2.mapper接口方式的开发整合(基于MapperFactoryBe ...
- Python7 - 面向对象编程进阶
本节内容: 面向对象高级语法部分 经典式 VS 新式类 静态方法,类方法,属性方法 类的特殊方法 反射 异常处理 Socket开发基础 面向对象高级语法部分 经典类 VS 新式类 先看一串代码: cl ...
- tidb调研
TiDB是新一代开源分布式 NewSQL 数据库,相比较于我们常见的数据库MySQL,TiDB具有水平伸缩.强一致性的分布式事务.基于 Raft 算法的多副本复制等特性.同时,TiDB兼容MySQL生 ...