首页 数据库 mysql教程 Mem Cgroup目录无法清理问题分析

Mem Cgroup目录无法清理问题分析

Jun 07, 2016 pm 04:30 PM
mem 分析 清理 目录 问题

? ? ? ? Cgroup(Control Group)是内核提供的资源隔离的技术,用于对Linux 系统中用户态进程使用的资源进行隔离,核心思想是:把进程分组,然后为进程组分配资源(包括内存、CPU、IO等)。其中Mem Cgroup用来隔离进程组使用的内存资源。 ? ? ? ? 在Hadoop集群

? ? ? ? Cgroup(Control Group)是内核提供的资源隔离的技术,用于对Linux 系统中用户态进程使用的资源进行隔离,核心思想是:把进程分组,然后为进程组分配资源(包括内存、CPU、IO等)。其中Mem Cgroup用来隔离进程组使用的内存资源。

? ? ? ? 在Hadoop集群中,我们使用了Mem Cgroup对MapReduce任务使用的内存资源进行隔离控制,以保证单个任务不能占用太大的内存,进而保证整个系统的稳定性。同时我们配置了release_agent,用于在mem cgroup中的所有进程退出后清理相关的资源。

? ? ? ? 但Mem Cgroup在Hadoop集群上线后,经常会出现某个Mem Cgroup中的进程已经全部退出,但对应的Cgroup目录清理不掉的现象。查看Cgroup的状态,有如下现象:

? ? ? ? [root@]# cat /cgroup/memory/test/tasks

? ? ? ? [root@]# cat /cgroup/memory/test/memory.usage_in_bytes

? ? ? ? 90112

? ? ? ??该cgroup的所有进程确实都已经退出了,但还是存在部分内存处于被使用状态,这是神马情况,下意识地想到,难道是Page Cache,果断验证下:

? ? ? ? echo 3 > /proc/sys/vm/drop_caches

? ? ? ? 刷掉Page Cache之后,残留的cgroup目录竟然成功被清理了,?那基本断定是Page Cache的影响了,后面就得分析下代码,研究下其中的原理了。

? ? ? ? 经过几天的分析,终于把Mem Cgroup的基本原理搞明白了。

? ? ? ? 在Linux内核中,每个Mem Cgroup都对应一个mem_cgroup结构,该结构的的核心是res_counter,记录了资源使用情况和资源限制,每个mem cgroup对象都包含一个与之关联的res_counter。

? ? ? ? ?Linux内核管理内核的基本单位是页面,采用page结构管理,一个物理页框对应着一个page结构,与此同时,新增了一个page_cgroup结构,用来关联page和mem_cgroup,这样给定任何一个页面,都可以找到对应的mem_cgroup。另外,每个进程都有一个mm_struct结构来管理进程的内存信息。每个mm_struct知道自己属于的进程,进而可以知道进程所属的mem_cgroup。

??
登录后复制

? ? ? ? 用户进程物理内存的分配基本都是通过page_fault来实现,现在来看下这个过程中是如何实现mem cgroup相关功能的,page_fault的大体流程如下:

? ? ? ?1、? 根据current进程找到对应的mm_struct结构

? ? ? ?2、? 分配需要的page页面

? ? ? ?3、? 调用mem_cgroup_newpage_charge:该函数根据mm struct查找到对应的mem_cgroup,然后? ? ? ??? ? ? ??? ? ? ? ? ? ? ??判断下当前mem_cgroup是否已经超过限制,如果没有,则把新分配page对应page_cgroup指向该mem_cgroup,并更新资源使用计数。如果已经超过了限制,则进行oom相关的处理。

? ? ? ? 现在来考虑下Page cache,这些内存是系统级的,可以被所有进程使用,那这些内存的使用算在哪个进程的头上呢?mem cgroup采用的是first touch的原则,就是说哪个进程把page cache页面“带进”内存,这个页面就算在谁的头上。

? ? ? ? 大致了解了Mem cgroup的原理,回到一开始的问题,虽然mem cgroup中的进程都已经退出了,但是这些进程使用的page cache仍然计算在这个mem cgroup中,导致mem cgroup一直被引用,因此mem cgroup清理不掉,刷掉page cache后,mem cgroup就没有被引用了,也就可以清理了。

? ? ? ? 针对该问题,我们在内核新增加了一个page cache的使用计算选择:把page cache全部算入默认的根mem cgroup。这样做的另外一个好处是,mem cgroup只记录进程本身利用的物理内存,更直观可控。同时page cache是可回收的,如果某个mem cgroup中的进程产生大量的page cache时,其他mem cgroup进程的内存基本不受影响,可能的坏处是影响其他mem cgroup内存分配的效率。

? ? ? ? 参考:http://lwn.net/Articles/432224/

你也许会喜欢:

  • hadoop集群System Cpu消耗过高问题分析 by 杂货店店长
  • 性能测试中sql索引引起的性能问题
  • 从Blue Pill、硬件虚拟化谈安全防护完备性上的一个小原则
  • 利用 Flash 漏洞的木马程序分析报告 by 师兄
  • 端午节蓝屏之谜:金山系列软件同微软KB2839229冲突技术分析
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

win10清理删除hiberfil文件教程介绍 win10清理删除hiberfil文件教程介绍 Mar 28, 2024 pm 03:16 PM

有不少win10用户可以在c盘当中看到hiberfil.sys这个文件,而且该文件经常占用了系统大量c盘,因此不少c盘不够的用户们就想要删除该文件,详细请看下文介绍。1、查看休眠文件,在弹出的窗口中去掉以下标记的前面的对号。2、再次查看c盘下面发现多了好几个大文件,其中hiberfil.sys就是休眠文件。这里打开cmd命令窗口,有的电脑可能没有管理员权限可以直接在系统目录中找到cmd命令,右键以管理员身份执行。3、在命令窗口中输入powercfg-hoff就会自动关闭休眠功能,休眠文件也会自动

微信读书怎么看目录 查看目录的方法 微信读书怎么看目录 查看目录的方法 Mar 30, 2024 pm 05:56 PM

  微信读书app手机版是一款非常不错的阅读软件,这款软件内提供的书籍作品非常多,随时随地想看就看一键搜索在线阅读,且都是官方正版授权的,不同类型的书籍整齐排序,享受舒适轻松的阅读氛围。切换不同情景的阅读模式,每天不间断更新最新的书籍章节,支持多端设备在线登录,批量下载到书架上,有无网络情况下一样能看,让大家从中发现更多知识,现在小编在线详细为微信读书伙伴们推送查看目录的方法。  1.打开需要查看目录的书籍,点击书籍中间位置。  2.点击左下方的三条线图标。  3.在弹出的窗口中,查看书籍目录即

织梦CMS二级目录打不开的原因分析 织梦CMS二级目录打不开的原因分析 Mar 13, 2024 pm 06:24 PM

标题:解析织梦CMS二级目录打不开的原因及解决方案织梦CMS(DedeCMS)是一款功能强大的开源内容管理系统,被广泛应用于各类网站建设中。然而,有时候在搭建网站过程中可能会遇到二级目录无法打开的情况,这给网站的正常运行带来了困扰。在本文中,我们将分析二级目录打不开的可能原因,并提供具体的代码示例来解决这一问题。一、可能的原因分析:伪静态规则配置问题:在使用

使用tree生成文件目录树进行展示 使用tree生成文件目录树进行展示 Mar 01, 2024 pm 05:46 PM

tree是一个命令行工具,它以树状格式递归地列出一个目录的内容,使得所有的目录、子目录和文件以分层的方式列出,从而直观地展示文件和文件夹的组织结构。以下是tree在Windows和Linux系统下的安装和使用方法Linux下tree的安装与使用Linux下安装tree:aptupdate&&aptinstalltree以下是tree命令的常用方式。#显示指定路径下的目录树tree/d/temp#限制最大的展示深度tree-L3#只显示目录不显示文件tree-d#显示包括隐藏的文件和目录tr

分析腾讯主要的编程语言是否为Go 分析腾讯主要的编程语言是否为Go Mar 27, 2024 pm 04:21 PM

标题:腾讯主要的编程语言是否为Go:一项深入分析腾讯作为中国领先的科技公司,在编程语言的选择上一直备受关注。近年来,有人认为腾讯主要采用Go作为主要的编程语言。本文将对腾讯主要的编程语言是否为Go进行深入分析,并给出具体的代码示例来支持这一观点。一、Go语言在腾讯的应用Go是一种由Google开发的开源编程语言,它的高效性、并发性和简洁性受到众多开发者的喜

如何清理vivo手机内存不足问题,快速释放空间? 如何清理vivo手机内存不足问题,快速释放空间? Mar 03, 2024 am 09:28 AM

如果你使用vivo手机时频繁遇到内存不足的问题,那么现在是时候学习如何清理手机内存并释放空间了。本指南将向你介绍一些简单而有效的方法,帮助你优化vivo手机的内存使用,使其运行更加流畅。 1.清理缓存文件缓存文件占据了手机内存的很大一部分空间,清理缓存能够显着提升手机的性能。首先,打开手机的设置菜单,在“存储”选项中找到“缓存数据”或“清理缓存”选项,点击进入。然后,选择清除缓存,等待清理完成。 2.卸载不必要的应用程序你是否经常下载各种应用程序,但实际上只使用其中的几个?这些废弃的应用程序会占用大

物华弥新破局测试常见问题解答:2月28日,我们期待您的到来! 物华弥新破局测试常见问题解答:2月28日,我们期待您的到来! Feb 26, 2024 pm 05:22 PM

物华弥新已经确定将于2月28日进行破局测试,本次主要为大家解决破局测试的常见问题,包括曾经参与过之前的测试这次有资格吗、测试的开启和结束、预下载时间、支持哪些设备平台等内容,一起来看看吧。物华弥新破局测试常见问题解答:2月28日,我们期待您的到来!1、「破局测试」的性质为?本次测试为安卓限量计费删档测试,测试结束后,本次测试的游戏数据将被删除。2、曾经参与过「开局测试」或「入局测试」,这次拥有参与「破局测试]的资格吗?如您曾参与过「开局测试」、「入局测试」,请扫描下方二维码前往“致曾参与内测玩家

声卡驱动有问题会出现什么情况 声卡驱动有问题会出现什么情况 Mar 02, 2024 am 10:49 AM

声卡驱动是电脑中控制和指引声卡的系统程序,它能够帮助我们播放出声音,因此如果声卡驱动有问题,最直观的情况就是在声音方面,会出现没有声音或者声音波动卡顿不正常。声卡驱动有问题会出现什么情况:一、声音错误1、声卡驱动就是为声音服务的,所以最直观的问题就是声音问题。2、不管是电脑没有声音,还是声音卡顿、延迟、有噪音、音量音调不正常都可能与声卡驱动有关。3、所以当我们遇到类似问题的时候,可以重新安装或更新声卡驱动试试看。二、设备管理器感叹号1、如果声音没问题,大部分情况下说明声卡驱动都是正常的。2、但我

See all articles