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.

最新文章

  1. ASP.NET Identity入门系列教程(一) 初识Identity
  2. [LeetCode] Burst Balloons 打气球游戏
  3. win7默认网关不可用怎么解决
  4. 让你彻底理解 “==”与 Equals
  5. SPI数据传输(库函数方法)
  6. 一些值得学习和借鉴的.Net 开源项目
  7. absolute绝对定位可以实现相对定位
  8. Javascript面向对象之创建对象
  9. BootStrap 轮播 Carousel
  10. VB6之切换桌面
  11. 几道数位DP
  12. Codeforces 900D Unusual Sequences 容斥原理
  13. [Codeforces 864A]Fair Game
  14. VMware虚拟机扩充硬盘容量
  15. Java中菜单的实现以及画实线与画虚线之间的自由转化
  16. 如何通过RNA-Seq了解转录本的结构
  17. JAVA日期查询:季度、月份、星期等时间信息
  18. CSS属性的私有前缀
  19. Android Studio3.0 Kotlin工程问题集
  20. 【[NOI2016]区间】

热门文章

  1. avalon2.2.3发布
  2. bootstrap--小李子demo
  3. ubuntu 安装 netbeans C++ IDE
  4. 开始学java痛苦之旅开启 12-31日 第一章节笔记
  5. go 静态web服务器
  6. StartFP
  7. window.location 结构
  8. Eclipse 的常用快捷方式
  9. Python学习之路——基础篇(1)字符串格式化
  10. c++常见面试题