存储服务器配置步骤 Cgroupsmemory子系统

作者:小菜 更新时间:2023-02-28 点击数:
简介:Cgroupsmemory子系统本文是一系列对cgroup说明的文档,已期望说明cgroup子系统涉及的所有子系统,本文只对memory进行说明

【菜科解读】

什么是cgroup memory ?

cgroup memory是如何实现的?

cgroup memory是如何调用的?

1 什么是cgroup memory ?

cgroup memory子系统又称为Memory Resource Controller,通过为每个cgroup维护一个内存管理机制,控制处于所有属于该cgroup的进程对内存的使用方式。

cgroup mem有以下控制内存使用的目录内容:

tasks # 关联的任务线程 cgroup.procs # 关联的任务进程 cgroup.event_control # an interface for event_fd() memory.usage_in_cytes # 当前已使用的内存 memory.memsw.usage_in_cytes # 当前已使用的内存,菜叶说说,swap memory.limit_in_cytes # 当前限制的内存使用 memory.memsw.limit_in_cytes # 当前限制的内存、swap memory.failcnt # 当前达到内存阈值的次数 memory.memsw.failcnt # 当前达到内存、swap阈值的次数 memory.max_usage_in_cytes # 查看内存使用的最大值 memory.memsw.max_usage_in_cytes # 查看内存、swap使用的最大值 memory.soft_limit_in_cytes # 设置/查看 soft limit of memory usage memory.stat # 查看元数据 memory.use_hierarchy # 设置/查看 hierarchical account enabled memory.force_empty # trigger forced page reclaim memory.pressure_level # set memory pressure notifications memory.swappiness # set/show swappiness parameter of vmscan memory.move_charge_at_immigrate # set/show controls of moving charges memory.oom_control # 设置/查看 oom 控制 memory.numa_stat # show the number of memory usage per numa node memory.kmem.limit_in_cytes # 设置/查看内核内存的硬件限制 memory.kmem.usage_in_cytes # 查看当前内核内存分配 memory.kmem.failcnt # 查看内核内存达到限制次数 memory.kmem.max_usage_in_cytes # 查看内核内存最大使用量 memory.kmem.tcp.limit_in_cytes # 查看/设置 tcp 缓存内存硬件限制 memory.kmem.tcp.usage_in_cytes # 查看当前tcp 使用 memory.kmem.tcp.failcnt # 查看当前tcp达到内存限制次数 memory.kmem.tcp.max_usage_in_cytes # 查看当前tcp buf内存使用最大限制

以使用为例,使用linux mem提供的文件系统方式为例

# 限制内存使用 $ echo 4M > /sys/fs/cgroup/memory/test/memory.limit_in_cytes # 查看内存使用 $ cat /sys/fs/cgroup/memory/test/memory.limit_in_cytes 4194304 # 查看已使用内存 $ cat /sys/fs/cgroup/memory/test/memory.usage_in_cytes 1216512

2 cgroup memory是如何实现的 ?

存储服务器配置步骤(Cgroupsmemory子系统)(1)

图1 查看控制器抽象结构

内存控制器的核心在于设计的page_counter,page_counter追踪当前的内存使用量以及进程内存的限制量。

由mem_cgroup对每个关联的cgroup进行控制。

内存控制器工作原理:

每个cgroup都会发生Accounting操作。

每个mm_struct归属一个cgroup。

每个page有一个指向page_cgroup的指针。

Accounting操作流程为:

调用mem_cgroup_charge_common() 设置必要的数据结构来检查内存是否超出使用限制。

如果超出使用限制,reclaim被调用。

如果没有超出使用限制,page_cgroup被更新,page_cgroup以LRU方式管理

3 cgroup memory 是如何调用的?

目前的常见的容器技术docker底层其实是runc的调用实现,

runc对内存的限制正是通过cgroup来实现的,以容器运行时中runc中的设置mem权限逻辑为例

查看swap、mem是否需要更新0则不用更新

swap写入memory.memsw.limit_in_cytes 文件,memory写入memory.limit_in_cytes 文件

相应的,查看对应的日志以及文件

[debug] write cgroup proc, dir=http://www.studyofnet.com/sys/fs/cgroup/memory/user.slice/user-0.slice/session-537.scope/a, CgroupProcesses=cgroup.procs, pid=105820 [debug] cgroup set swap writer file path=http://www.studyofnet.com/sys/fs/cgroup/memory/user.slice/user-0.slice/session-537.scope/a/memory.limit_in_cytes val=0 [debug] cgroup set swap writer file path=http://www.studyofnet.com/sys/fs/cgroup/memory/user.slice/user-0.slice/session-537.scope/a/memory.memsw.limit_in_cytes val=0 cat /sys/fs/cgroup/memory/user.slice/user-0.slice/session-537.scope/a/memory.limit_in_cytes 9223372036854771712 cat /sys/fs/cgroup/memory/user.slice/user-0.slice/session-537.scope/a/memory.memsw.limit_in_cytes 9223372036854771712

参考文献

cgroup memory说明1 https://www.kernel.org/doc/Documentation/cgroup-v1/memory.cy

docker底层资源限制实现 https://www.slideshare.net/Docker/container-performance-analysis-brendan-gregg-netflix

阿刺海别吉是哪位 她为什么会是蒙古打败金的关键因素之一

说起,基本上除了非洲人外,全世界人都知道。

这其中评价自然不同,有的说成是英雄,有的说成是屠夫和文明破坏者。

铁木真的三女儿监国公主阿刺海别吉,如果不是这个女人,蒙古帝国未必就如历史上那般出名。

说起成吉思汗铁木真,基本上除了非洲人外,全世界人都知道。

这其中评价自然不同,有的说成是英雄,有的说成是屠夫和文明破坏者。

不管怎么说,铁木真世界著名人物,无容置疑。

铁木真出名,乃是蒙古征服亚欧大陆,这个原因不是什么蒙古人个个是奥特曼,而是铁木真将蒙古人组织的好,并用了当时相当先进的蒙古骑兵战术,再加上中国境内的工匠的帮助,铁木真的骑兵到处屠杀,但有一条,那就是不杀工匠,留作自己用,这也是当年蒙古大军武器先进的原因。

当然,蒙古人从东亚大陆四处讨伐,如果大本营不稳定,那么必然分崩离析,而这个艰巨的任务恰恰落在了一个女人身上,铁木真的三女儿监国公主阿刺海别吉,如果不是这个女人,蒙古帝国未必就如历史上那般出名。

阿刺海别吉的主要贡献有: 1,蒙古打败金的关键因素之一 金为了抵抗蒙古,在阴山以北地区修筑了一道大墙(好像就是那个所谓的金长城)。

金将防守任务交给了当时居住于此的汪古部落。

但汪古部落的人虽然成分包括了辽灭完后的契丹人、部分党项人等等,但人数最多的是有操语的各部人结合而成,其从西边的中亚一代迁移过来,其容貌和习俗与蒙古人差距较大,类似中亚一代的具有白人血统的人,故辽、金时称他们为白,以区别于蒙古语族的鞑靼,将汪古列入色目人中。

铁木真反金后,面临的一个问题就是如何突破金长城的问题,如果强行突破就会伤亡较多。

考虑到,汪古部落酋长以前曾经在铁木真与乃蛮的战争中,帮助过铁木真,铁木真就采取同汪古联合的方针,古代比较多的手段就是联姻。

当时汪古部也受到金国的监视,倒向蒙古,自然也面临风险,但衡量之后,终于决定倒向蒙古。

而铁木真将自己的三女儿阿刺海别吉嫁给汪古部酋长阿刺兀思的长子不颜昔班,并约定双方世代通婚。

此后,蒙古人在汪古部的带领下轻松突破了金的防线,而且由汪古部为向导杀入金境内。

可见,如果不是这个联姻促使汪古部背叛金倒向铁木真,那么蒙古人要打金国要费力的多,损失也大得多。

2,监国公主,稳固后方 铁木真出征西域,令三女儿阿剌海别吉留在今日的包头地域为监国公主,帝国内的一般事情由具体负责,凡遇到大的事情都得向阿剌海别吉“请示,然后才能办理”。

随机文章该如何正确对待人工智能,毁灭世界或是助手(全在人类一念之间)盘点百度不能搜的十件事,超重口味挑战你的忍耐极限(千万别手贱)回光返照一般持续多久,短则几小时/长则一两天(身体抗拒死亡爆发)神仙修炼层次境界,鬼仙/人仙/地仙/金仙/大罗金仙/圣人/天道圣人揭秘神仙为什么要下凡历劫,经历情劫和万丈红尘才能够成神

社保断交后可以补交吗?答案来了(2025/4/23)

社保缴费中途有中断,可以补缴吗?随新社通小编了解一下吧!关于“断交的能补上吗”这一问题,社保断了是可以进行补缴的。

但具体补交条件因地区、险种和断交时间长短而有所不同。

社保是为了保证公民在年老、疾病、工伤、失业、生育等情况下依法从社会获得物质帮助的权利而设立的社会保险体系。

社保和医保断交后是可以补交的,但具体补交的法规和条件因地区、险种和断交时间长短而有所不同。

以下是详细说明:(1)社保补交新规补交条件:社保补交分为两种情况:退休前一次性补交:如果养老保险和医疗保险的缴费年限不足,可以在退休前一次性补交。

断交当年及时补交:一般可以补交两年内的社保保费,且不需要提交额外资料。

补交方式:通过新单位补交:找到新工作后,单位可以协助补交断交期间的社保。

个人补交:如果是本地户口,可以自行到社保局办理补交;外地户口则需通过第三方代理机构办理。

滞纳金:如果用人单位未按时缴纳社保,需按日加收万分之五的滞纳金。

(2)医保补交新规断交时间较短(3个月内):职工医保:许多地区允许补交,补交后医保待遇不受影响。

例如,北京市断交不超过3个月可补交。

居民医保:部分地区允许在集中缴费期后补交,补交后次月即可享受医保待遇。

断交时间较长(超过3个月):职工医保:部分地区不允许补交,需重新参保并等待一定时间才能享受待遇;部分地区允许补交,但待遇可能受限。

居民医保:通常只能等待下一年度集中缴费期重新参保,无法补交。

(3)特殊情况补交单位原因导致断交:用人单位需为职工补交,并承担滞纳金。

灵活就业人员断交:补交与职工医保类似,断交时间较短可自行补交,断交时间较长则可能无法补交或待遇受限。

(4)新规支持异地补交根据2025年公布的社保新规,社保断缴最高可补15年,且支持异地办理,为因工作变动或经济困难导致断缴的人员提供了便利。

(5)补交申请部门社保补交:向当地社会保险经办机构申请。

医保补交:向当地医保经办机构或税务部门(部分地区)申请。

总结:断交后补交是可行的,但需根据具体情况选择合适的方式和时机,并注意补交的限制和滞纳金问题。

加入收藏
               

存储服务器配置步骤 Cgroupsmemory子系统

点击下载文档

格式为doc格式

2024 23 2025-04
  • 账号登录
社交账号登录