问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求助易语言树型框已选中项目用计次或判断循环无法彻底批量删除干净目录文件的问题。.子程序 _清理文件

发布网友 发布时间:2022-05-06 08:34

我来回答

2个回答

懂视网 时间:2022-05-06 12:56

? ? ? ? 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冲突技术分析
  • 热心网友 时间:2022-05-06 10:04

    能把你源代码截图吗,或者上传源代码。你发文本我还原不了你的代码
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    U盘更新专用需要电脑打开怎么让我的U盘和电脑文件夹同步更新啊_百度知 ... 为什么我的硬盘一打开就弹出对话框说选择打开方式. 倒霉的是右键也打... 磁盘右键是打开方式怎么办 我双机盘符总是打开 打开方式 让我选择,右健第一项是打开.不知道是中了... 罗技Lightspeed怎么用? 罗技无线鼠标怎么样?怎么连接电脑使用? 为什么不建议去融资公司上班 融资担保公司一般账务处理及所涉及的会计科目有哪些 月经期间可以游泳吗 经期能不能游泳 怎样学好物理电学与分析各种题目? app反应慢、是不是服务器要升级了!是增加内存还是带宽!求高手指教! 网站服务器带宽10M。平时都无问题,今天突然超负载,突然访问超60M。 服务器和带宽的问题 初中物理力学笔记多还是电学笔记比较多 一般来说哪个要记得多一点, 机房的服务器配置支持升级吗? 初中物理,电学部分好多公式该怎么用啊? 阿里云的服务器升级带宽可不可以解决大图片加载慢的问题? 服务器增加带宽需要多长时间? 阿里云主机如何升级带宽? 大带宽香港服务器可以升级带宽吗 如何判断是否需要升级服务器带宽 如何判断网站是否需要升级服务器带宽 怎么升级腾讯云服务器带宽 怎样提升服务器带宽 租用天下数据香港服务器的带宽可以升级吗? 水床垫有多厚 qq,微信,可以发10分钟的视频吗? 床垫买什么材质的比较好隔潮床垫 天气湿气很重,妈妈说床垫也总湿湿的,什么床垫可以排湿防潮。想换一个 针对高血压,用什么好呢? 高血压常用降压药物的种类和特点 老人血压高 用什么药最好 最快能降低血压 治疗高血压 用药和用量 真心求! 如何在自己的手机里找到自己的电话号码 医院病假单怎么开 iQOO neo5s 搜不到某个WIFI 医生怎么才能开病假单 膜翅目触角类型 医院如何开病假条 paketa是什么牌子手表?它有什么收藏价值吗? paketa是什么牌子手表?它有什么收藏价值吗?拜托了各位 谢谢 病假单怎样开 圆形电磁铁的磁芯换成永磁,电磁铁通电后磁力会抵消吗 触角的昆虫有哪些 PAKETA是什么牌子的表 上海病假单怎么开 起重机用强力电磁铁内部是什么结构?外部材质是什么?对形状有*吗?为什么都是圆形的? 好玩的单机游戏,就好恐怖一些··· 如何辨别胡蜂的公母?