LinuxMM--Memory Pressure
Memory pressure
定义
在操作系统中,用户分配、文件缓存、网卡包缓冲区等等都会消耗内存。一旦出现内存紧张就会导致memory pressure.
引发
当某个任务需要请求内存时就有可能引发memroy pressure。
通常情况下内存申请时,只要分配合适的空闲内存给申请者即可. 然而,有时候如果我们需要一些特别的内存资源,例如DMA区的内存(或者物理地址连续的大内存,低端内存,以及特定的某个numa结点上的内存),即使还有其他类型的空闲内存这也会引发memory pressure.
Memory pressure的一个误区就是:系统中有空闲内存就不会造成memory pressure.
FAQ
Memory pressure会引发什么问题?
当出现memory pressure的时候内核不得不做些额外的工作来以满足memory pressure下的内存申请。
在linux中,这个额外的工作就是进行内存扫描和内存的重新申请,包括写出
脏数据,丢掉预读到缓存的数据,或者进行内存swap。
如何知道系统处于memory pressure?
可以通过cat /proc/vmstat 接口,如果观察到所有的条目都在"scan" 就表示处于memory pressure.
同时还可以通过 cat /proc/zoneinfo来观察每个zone的使用情况来进行判断。
如何找到引发memory pressure的源头?
可以尝试 /sys/kernel/debug/tracing/events/kmem/mm_page_alloc来进行跟踪分析。
NUMA系统中如何处理memroy pressure?
如果运行的是NUMA系统,实质上是将系统划分成不同的结点分开进行管理。
假设有一个包含2个结点的NUMA系统共配置了64GB的内存,每个结点32GB。由于系统分为两个结点,因而整个计算机就按照两个32GB的系统来工作而非一个64GB的系统。
这样的情况下,其中的某个单独的结点就更容易陷入memory pressure即使整个系统或者另一个结点处于非pressure状态。
在NUMA系统中,vm_zone_reclaim_mode组件来负责处理某个结点产生的memory pressure.
最新文章
- ASP.NET Identity入门系列教程(一) 初识Identity
- [LeetCode] Burst Balloons 打气球游戏
- win7默认网关不可用怎么解决
- 让你彻底理解 “==”与 Equals
- SPI数据传输(库函数方法)
- 一些值得学习和借鉴的.Net 开源项目
- absolute绝对定位可以实现相对定位
- Javascript面向对象之创建对象
- BootStrap 轮播 Carousel
- VB6之切换桌面
- 几道数位DP
- Codeforces 900D Unusual Sequences 容斥原理
- [Codeforces 864A]Fair Game
- VMware虚拟机扩充硬盘容量
- Java中菜单的实现以及画实线与画虚线之间的自由转化
- 如何通过RNA-Seq了解转录本的结构
- JAVA日期查询:季度、月份、星期等时间信息
- CSS属性的私有前缀
- Android Studio3.0 Kotlin工程问题集
- 【[NOI2016]区间】