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

作者:小菜 更新时间:2025-04-29 点击数:
简介: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

农村每年交的社保到底需要交到多少年

农村每年交的社保到底交到多少年,新社通app-社保缴费查询工具提供的最新答案如下:农村社保要交满15年农村社保需要缴纳的年限如下?:?养老保险?:一般要求缴纳满15年。

具体要求如下:已年满60周岁且未享受城镇职工基本养老保险待遇的农村居民,可以不用缴费,直接按月领取基础养老金。

但其符合参保条件的子女则应当进行参保缴费?。

距离领取养老金年龄不足15年的农村居民,应按年进行缴费,同时也允许进行补缴,以确保累计缴费不超过15年?12。

距离领取养老金年龄超过15年的农村居民,同样应按年缴费,且需要确保累计缴费时间不少于15年?。

?医疗保险?:在达到退休年龄时,男性需累计缴满30年,女性累计缴满25年,此后便无需继续缴纳医疗保险费用?。

那么,职工社保、灵活就业和城乡居民养老保险,对于生育待遇方面是否有不一样的要求呢?下面跟着新社通一起了解下:生育待遇不同:参加职工基本医疗保险的灵活就业人员,按要求享受生育医疗费用待遇,不享受生育津贴待遇,其享受生育医疗费用待遇的起止时间与享受职工基本医疗保险待遇的时间一致依据社会保险法法规,用人单位已缴纳生育保险费的,其职工享受生育保险待遇。

生育津贴按照职工所在用人单位上年度职工月平均工资计发。

以北京市为例,依据北京市相关法规,生育津贴按照女职工本人生育当月的缴费基数除以30再乘以产假天数计算。

山东城乡居民医保参保人员生育医疗费实行定额支付,一娃、二娃、三娃住院分娩医疗费,符合报销范围的费用医保支付分别提高到1000元、1500元、3000元。

实际发生费用低于定额支付标准的,按法规要求范围内实际核算金额进行结算。

(备注:数据仅供参考,具体以当地有关法规为准)

新疆断缴社保能不能补交

下面随新社通小编看看:新疆断缴社保能不能补交?社保断缴可以补缴吗新疆社保断交期间是可以进行补缴的。

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

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

以下是详细说明:(1)社保补交新规补交条件:社保补交分为两种情况:断交当年及时补交:一般可以补交两年内的社保保费,且不需要提交额外资料。

退休前一次性补交:如果养老保险和医疗保险的缴费年限不足,可以在退休前一次性补交。

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

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

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

(2)医保补交新规断交时间较短(3个月内):居民医保:部分地区允许在集中缴费期后补交,补交后次月即可享受医保待遇。

职工医保:许多地区允许补交,补交后医保待遇不受影响。

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

断交时间较长(超过3个月):居民医保:通常只能等待下一年度集中缴费期重新参保,无法补交。

职工医保:部分地区不允许补交,需重新参保并等待一定时间才能享受待遇;部分地区允许补交,但待遇可能受限。

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

单位原因导致断交:用人单位需为职工补交,并承担滞纳金。

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

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

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

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

新疆一分钱不交有钱领取吗?没有交过一分钱社保,老了怎么办,能领养老金吗?一分钱不交60岁是不能领养老金的。

根据现行的养老保险制,无论是职工基本养老保险还是城乡居民养老保险,都需要满足一定的缴费年限才能在达到法定退休年龄时领取养老金。

对于职工基本养老保险,通常要求累计缴费满15年;而对于城乡居民养老保险,虽然方案更加灵活,但一般也需要有一定的缴费记录或符合特定的条件才能享受养老金待遇。

加入收藏
               

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

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录