Linux交换空间和内存不足
交换空间
交换技术就是将一页内存复制到预先设定的硬盘上的交换空间,来释放该页占用内存。物理内存和交换空间的和就是可提供的虚拟内存的总量。Linux有两种形式的交换方式,分别是交换分区,交换文件。
- 优点:可以把空闲的内存页写入磁盘,把空出的内存给进程使用。
- 缺点:交换发生越多,速度越慢。
交换空间的大小
交换空间的配置原则:
- 对于桌面系统,使用系统内存的两倍的交换空间,将可以运行大量的应用程序(其中可能有很多闲置的),使更多的RAM用于主要的应用;
- 对于服务器,使用小量的交换空间(通常是物理内存的一半),这样你就可以通过监控交换空间的大小来预警是否需要增加RAM;
- 对于老式台式机,使用尽可能大的交换空间
swappiness
有时候你会发现,虽然电脑内存还有非常多的剩余空间,但系统仍然在使用交换空间。这是由于swappiness的设置。swapppiness是Linux内核的一个参数,它控制Linux内核将进程从物理内存中交换出去的频繁度。swappiness的值可以在0到100之间。较低的swappiness值使Linux内核尽量避免进行交换操作,而较高的值则使内核尽量使用交换空间。swappiness的默认值是60。如果值为0,那么内核不进行交换操作,除非物理内存已经用完。如果值为100,那么内核将频繁地进行交换操作。若用户的物理内存充足,那么推荐把swappiness值设为10以提高程序的响应性。
交换公式(swap formula)
交换公式可以用于计算系统在什么时候会开始使用交换空间。交换公式如下:
剩余内存 <= 总物理内存/ 100 *swappiness
优先级
如果你的系统上不只有一个交换分区或交换文件,那么你应当考虑为每个交换空间设置一个优先级。
OOM现象
了解了交换空间,我们知道了操作系统所有进程可以使用的内存总量是交换空间+swap空间。
默认情况下,Linux内核会允许进程请求的内存超出实际可用内存的大小。这在现实世界中是有意义的,因为大多数进程其实并不会用到所有分配给它的内存(注:同一时间内不会全用到)。
这个做法的一个很明显的副作用就是,万一有一个程序正走上了一条耗尽内存的不归路怎么办。这会导致低可用内存的情况,也就是没有内存页能够再分配给进程了。你可能也碰到过这种情况,没有root帐户你是杀不掉这种顽固的进程的。为了解决这一情况,在剩余内存低于某个阈值,终结者被激活了,并找出了要终结的进程,这一现象叫OOM现象。
overcommit特性
Linux有overcommit特性,允许进程申请超过当前内存的更多的空间。可以为overcommit设置3个级别,级别0,1都会触发OOM。
- 0:默认级别,启发式策略,比较严重的Overcommit将不能得逞。
- 1:永远允许overcommit,这种策略适合那些不能承受内存分配失败的应用,比如某些科学计算应用。
- 2:永远不允许overcommit,最大内存申请量为物理内存 + swap空间 * N,N为系数。
如何选择被杀死的进程
只要存在overcommit,就可能会有OOM killer。Linux下每个进程都有个OOM权重,在/proc/oom_adj里面,取值是-17到+15,取值越高,越容易被干掉。所以,我们可以把进程的oom_adj权重设置为-17,就能避免杀死。
Linux交换空间和内存不足的更多相关文章
- linux交换空间
swap空间有两种形式:一是交换分区,二是交换文件.总之对它的读写都是磁盘操作. linux内存通过 virtual memory 虚拟内存来管理整个内存, 虚拟内存管理着物理内存,也管理着swap交 ...
- Linux交换空间(swap space)
每次安装Linux的时候,都会要求配置交换分区,那么这个分区是干嘛的呢?不设置这个分区有什么后果?如果一定要设置,设置多大比较合适?本篇将试图回答这些问题并尽量覆盖所有swap相关的知识. 下面的所有 ...
- Linux交换空间(swap space)的那些优缺点
下面的所有例子都在ubuntu-server-x86_64 16.04下执行通过 什么是swap? swap space是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合.简单点说 ...
- 如何在Linux上清理内存缓存、缓冲与交换空间
如何在Linux上清理内存缓存.缓冲与交换空间 与其他类型的操作系统一样,GNU/Linux已经有效的实现了内存管理,甚至更加优秀.但是如果任何进程正在吃光你的内存,并且你想清理它,Linux提供了一 ...
- 在 Linux 上如何清除内存的 Cache、Buffer 和交换空间
原文链接:http://www.linuxidc.com/Linux/2015-06/118856.htm 像任何其他的操作系统一样,GNU/Linux 已经实现的内存管理不仅有效,而且更好.但是,如 ...
- Linux 上如何清除 RAM 内存高速缓存,缓存和交换空间
像任何其他的操作系统一样,GNU / Linux已经有效地实施了内存管理甚至更多.但是,如果有任何进程正在蚕食你的内存,你要清除它,Linux提供了一个方法来刷新或清除RAM缓存. 在Linux中如何 ...
- Linux命令 swap:内存交换空间
swap 内存交换空间的概念 swap使用上的限制
- 77 swapon-激活Linux系统中交换空间
Linux swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存. 语法 /sbin/swapon -a [-v] /sbin/swapon [-v] ...
- 运行预构建 Linux 映像的 Windows Azure 虚拟机中的交换空间 – 第 1 部分
本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 随着基础结构服务(虚拟机和虚拟网络)近期在 Windows Azure 上正式发布,越来越多的企业工作负荷正在向 ...
随机推荐
- (记忆化搜索 )The Triangle--hdu --1163
http://poj.org/problem?id=1163 Description 73 88 1 02 7 4 44 5 2 6 5 (Figure 1) Figure 1 shows a ...
- 找不到UserDetails.java
真是一个奇葩的问题,dubbo接口 在controller中引用是可以正常的,但是放到service层中,就一直报找不到UserDetails.java,从路径看,看不出来是什么包里面的类 结果把路径 ...
- Hdu3829 Cat VS Dog(最大独立点集)
Cat VS Dog Problem Description The zoo have N cats and M dogs, today there are P children visiting t ...
- poj 2352 stars 【树状数组】
题目 题意:按y递增的顺序给出n颗星星的坐标(y相等则x递增),每个星星的等级等于在它左边且在它下边(包括水平和垂直方向)的星星的数量,求出等级为0到n-1的星星分别有多少个. 因为y递增的顺序给出, ...
- 《mysql必知必会》学习_第四章_20180724_欢
P27: select prod_name from products; # select 列 from 表 # 从表products 中检索 名为 prod_name 的列 P28 多个语句一起必须 ...
- Windows 95 输入法编辑器
Windows 95 输入法编辑器 翻译:戴石麟译自微软的MSDN DDK 关于Windows 95的多语言IME(输入法编辑器) 在Windows 95中,IME以动态连接库(DLL)的形式提供,与 ...
- excel冻结窗格
编辑excel时冻结窗格可以大大增加可读性.每个sheet都应该加上. 第一份工作的时候,上司比较严格,还因为这个挨过几次骂.所以这个技巧大家一定要掌握 方法很简单: 选中首行:视图 -- 冻结窗格 ...
- 6.Django扩展
富文本编辑器 借助富文本编辑器,管理员能够编辑出来一个包含html的页面,从而页面的显示效果,可以由管理员定义,而不用完全依赖于前期开发人员 此处以tinymce为例,其它富文本编辑器的使用可以自行学 ...
- Android-Version Compatibility Issues (Gradle 2.14.1 requires Android Gradle plugin 2.1.3 (or newer)) but project is using
当AndroidStudio加载工程Project的时候,出现以上错误❌,千万不要点击,否则就是更多其他的错误: 解决方案: 1.认真翻译错误: 2.分析问题发生的原因,然后看到了 ..... ...
- AJPFX:外汇的杠杆保证金是什么
外汇杠杆和保证金两者有着密切的关系.杠杆越大,交易时所用的保证金就越少. 杠杆即为保证金可以缩小的倍数.例如在没有杠杆的情况下,做一手即10万的欧元兑美元货币对合约(现在价格是1.05821),您所需 ...