linux swap 32g内存,Linux性能优化从入门到实战:12 内存篇:Swap 基础

内存资源紧张时,可能导致的结果:

(1)OOM 杀死大内存CPU利用率又低的进程;

(2)内存回收

1 )回收Buffer和Cache。大部分文件页直接回收,以后有需要时,再从磁盘重新读取,脏页先写入磁盘后释放内存。脏页可以通过两种方式写入磁盘:在应用程序中可以通过系统调用 fsync ,把脏页同步到磁盘中;也可以交给系统,由内核线程 pdflush 负责这些脏页的刷新。

2 )回收通过内存映射获取的文件映射页。可以先被释放掉,下次再访问的时候,从文件重新读取。

3 )回收匿名页(Anonymous Page,应用程序动态分配的堆内存)。Linux 的 Swap 机制,把一些不常访问的内存先写到磁盘中,然后释放这些内存,给其他更需要的进程使用,再次访问这些内存时,重新从磁盘读入内存。

Swap 原理

Swap 把一块磁盘空间或者一个本地文件,当成内存来使用。它包括换出和换入两个过程:

换出,就是把进程暂时不用的内存数据存储到磁盘中,并释放这些数据占用的内存。

换入,则是在进程再次访问这些内存的时候,把它们从磁盘读到内存中来。

应用场景:

(1)当内存不足时,有些应用程序也并不想被 OOM 杀死,而是希望能缓一段时间,等待人工介入,或者等系统自动释放其他进程的内存,再分配给它。

(2)我们常见的笔记本电脑的休眠和快速开机的功能,也基于 Swap 。休眠时,把系统的内存存入磁盘,这样等到再次开机时,只要从磁盘中加载内存就可以。这样就省去了很多应用程序的初始化过程,加快了开机速度。

回收内存的方式:

(1)直接内存回收,比如回收缓存;

(2)定期回收内存,有一个专门的内核线程 kswapd0 定期回收内存。

为了衡量内存的使用情况,kswapd0 定义了三个内存阈值,分别是页最小阈值(pages_min)、页低阈值(pages_low)和页高阈值(pages_high)。剩余内存,则使用 pages_free 表示。

e548b2f7d2a82890859db81b1d7f93c8.png

剩余内存小于页最小阈值,说明进程可用内存都耗尽了,只有内核才可以分配内存。

剩余内存落在页最小阈值和页低阈值中间,说明内存压力比较大,剩余内存不多了。这时 kswapd0 会执行内存回收,直到剩余内存大于高阈值为止。可以通过内核选项 /proc/sys/vm/min_free_kbytes 来间接设置,并且其他两个阈值,也根据页最小阈值计算得到:pages_low = pages_min5/4;pages_high = pages_min3/2

剩余内存落在页低阈值和页高阈值中间,说明内存有一定压力,但还可以满足新内存请求。

剩余内存大于页高阈值,说明剩余内存比较多,没有内存压力。

NUMA 与 Swap

5e93875b93e175acfb85bd5afaa49054.png

标签:12,阈值,回收,内存,Linux,磁盘,pages,Swap

来源: https://www.cnblogs.com/qccz123456/p/11192087.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值