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.

LinuxMM--Memory Pressure的更多相关文章

  1. Android中基于CGroup的memory子系统HAL层分析-lmkd

    Android在内存管理上于Linux有些小的区别,其中一个就是引入了lowmemorykiller.从lowmemorykiller.c位于drivers/staging/android也可知道,属 ...

  2. debug实战:Unmanaged High Memory非托管高内存

    最近又监控到一个高内存的问题,周五下班把系统打开,周末2天没关,周一来看已经涨到5.2G,这次与以往不同,不是.net的内存泄漏,而是非托管引起的. 1. 抓dump,确定高内存的类型 //dump有 ...

  3. Spring Boot Memory Performance

    The Performance Zone is brought to you in partnership with New Relic. Quickly learn how to use Docke ...

  4. Troubleshooting SQL Server RESOURCE_SEMAPHORE Waittype Memory Issues

    前言: 本文是对博客https://www.mssqltips.com/sqlservertip/2827/troubleshooting-sql-server-resourcesemaphore-w ...

  5. [转帖]Docker容器CPU、memory资源限制

    Docker容器CPU.memory资源限制 https://www.cnblogs.com/zhuochong/p/9728383.html 处理事项内容等 这一块内容感觉 不清楚.. 背景 在使用 ...

  6. Docker(二十)-Docker容器CPU、memory资源限制

    背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不 ...

  7. The "Out of socket memory" error

    The "Out of socket memory" error I recently did some work on some of our frontend machines ...

  8. PatentTips - Modified buddy system memory allocation

    BACKGROUND Memory allocation systems assign blocks of memory on request. A memory allocation system ...

  9. Docker容器CPU、memory资源限制

    背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不 ...

随机推荐

  1. {HDU}{2516}{取石子游戏}{斐波那契博弈}

    题意:给定一堆石子,每个人最多取前一个人取石子数的2被,最少取一个,最后取石子的为赢家,求赢家. 思路:斐波那契博弈,这个题的证明过程太精彩了! 一个重要的定理:任何正整数都可以表示为若干个不连续的斐 ...

  2. JS的封装

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAl8AAADiCAYAAABwdKKfAAAYLGlDQ1BJQ0MgUHJvZmlsZQAAWIWVeQ

  3. 线程小demo

    下午就手写了两个demo,整理了一下. #!/sur/bin/env python # -*- coding:utf-8 -*- __author__ = 'ganzl' import threadi ...

  4. 我的第一个web应用开发搭建-环境配置

    MyEclipse 2014 破解图文详细教程 MyEclipse作为Java EE最受欢迎的IDE,最新版本为2014版,MyEclipse 2014破解的方法. 一.安装完成MyEclipse20 ...

  5. eclipse maven spring mvc el表达式无效

    http://www.myexception.cn/javascript/2031310.html

  6. JavaScript 随笔1

    第一章 JavaScript实现 JavaScript由三个不同部分组成: ECMAScript,提供核心语言功能 DOM,提供访问和操作网页内容的方法和接口 BOM,提供与浏览器交互的方法和接口. ...

  7. web程序员该学习什么

    以我个人的观点分了几个级别,仅供参考 初级发展(学习期) 前端应该学习HTML javascript css 能够制造简单的前端页面满足自己的工作需求 后端应该学习asp.net or jsp or ...

  8. 第三章 centos安装git

    yum install git 安装后的默认存放地点/usr/bin/git

  9. for xml 字符串拼接

    SELECT TOP 10 B.user_gid,LEFT(StuList,LEN(StuList)-1) as hobby FROM (SELECT user_gid,( SELECT CAST(a ...

  10. Java(多态)动手动脑

    1> 请看以下"变态"的类(参看示例ParentChildTest.java) 上述代码的特点是: 子类和父类定义了一模一样的字段和方法 运行以下测试代码 1. 上边的程序运 ...