Linux cgroup 源码解读(一)

Linux Kernel Cgroups源码浅析 本文是我几个月前在研究linux kernel Cgroups时整理的。文中大部分的理论知识是从网上各种贴子solo的,源码分析部分,我是基于kernel 4.4.19的代码进行解读分析的,各个内核版本之间应该几乎没啥差别。介绍Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memo 阅读详情

Linux cgroup 几个重要的数据结构:

一个/多个cgroup_control子系统,组成一个树形结构。

1. cgroup_root:cgroup(树)的根,初始所有系统都挂载在全局默认cgrp_dfl_root上。一个cgroup_root可以挂载多个子系统。一个只系统,只能挂载在一个cgroup_root上。

2. cgroup:树子节点。每在一个cgroup_root下创建一个目录,就会创建一个cgroup。

3. cgroup_subsys_state:指定cgroup的子系统状态。因为无法确定一棵树所挂载的子系统,所以cgroup包含一个所有子系统状态的数组。

一个进程,一定是挂载多个子系统下,也即挂载多个不同的树的cgroup下。所以为了精简task结构体的大小,单独出一个css_set来表示。所以,css_set 包含一个系统当前所挂载的cgroup链表。

多个进程,可以在同一个css_set中,当把一个进程加入/移除某个cgroup,先在已有css_set查找是否已经存在这样的css_set,为了方便的查找是否已存在相应css_set,css_set还包括一个所有子系统状态的列表,只有所有子系统状态一样,再进行进一步查找,确保对应的cgroup也一样。

每次mount一个子/多个系统,就会创建一个cgroup_root,系统就会遍历所有css_set,更新所有css_set的cgroup链表。

 

cgroup初始化流程如下图:

 

 

 

深入解读Linux进程调度Schedule 长文慎入~~ 调度系统是现代操作系统非常核心的基础子系统之一,尤其在多任务并行操作系统(Multitasking OS)上,系统可能运行于单核或者多核CPU上,进程可能处于运行状态或者在内存中可运行等待状态。如何实现多任务同时使用资源并且提供给用户及时的响应实现实时交互以及提供高流量并发等对现代操作系统的设计实现带来了巨大挑战,而Linux调度子系统的设计同样需要实现这些看似矛盾的要求,适应不同... 阅读详情

相关推荐

Kubernetes源码编译安装最佳实践:Ubuntu 24.04 + k8s v1.28.8

Kubernetes(k8s)作为云原生核心编排系统,其稳定运行依赖于底层组件的精确构建与深度可控。源码编译并非炫技,而是实现确定性交付、安全合规审计与故障精准定位的技术前提——它揭示kube-apiserver的启动参数机制、kubelet与containerd的cgroup驱动协同原理,并支撑金融级SLA所需的可追溯SBOM生成能力。在Ubuntu 24.04这一cgroup v2原生、systemd 255优化、containerd 1.7+预置的新一代LTS基座上,结合k8s v1.28.8 LTS

462

Linux源码剖析——CGroup 实现原理

前面我们介绍了CGroup的使用与基本概念,接下来将通过分析源码(本文使用的 Linux2.6.25 版本)来介绍CGroup的实现原理。在分析源码前,我们先介绍几个重要的数据结构,因为CGroup就是通过这几个数据结构来控制进程组对各种资源的使用。cgroup。

白话机器学习 1208

Linux内核中的overlay文件系统

Docker 内核实现容器的功能用了linux 内核中的三个特性 Namespace、Cgroup、UnionFs,今天我们来说一下UnionFs。linux UnionFs 实现的是overlay 文件系统OverlayFs 文件系统分为三层,lower 是只读层Upper 是可读写Merged 是 lower 和Upper 合并的目录。

qq_32783703的博客 6187

Cgroup核心代码分析

Linux Kernel Cgroup Core

1647

CAPL编程入门:从零开始掌握汽车通信脚本语言

本文详细介绍了CAPL编程的基础知识,从开发环境搭建到核心语法精要,再到总线通信实战和高级调试技巧。CAPL作为汽车通信脚本语言,专为CAN、LIN等网络协议设计,帮助工程师高效完成车载网络测试。通过实战案例和性能优化建议,读者可以快速掌握CAPL编程技能。

s1t2u3的博客 979

【各种轮子2】基于Icepak的PCB散热仿真比较

随着电子产品的集成度越来越高,PCB板的尺寸越来越小,板级芯片散热的问题越来越成为电子工程师的一个重要挑战。对于板级芯片散热,主要依靠工程师对PCB自身的设计进行优化,同时要兼顾系统的尺寸和成本。本文分别从芯片角度和PCB角度进行建模,芯片模型选用QFN封装,PCB模型采用走线导入模型,探讨了芯片结构,PCB铜厚,PCB叠层厚度对芯片散热的影响。

3670

Linux源码编译开启cgroup blk限制io性能

经过上面的mout之后就可以看到/sys/fs/cgroup/blkio中出现了各种控制节点。

GetnextWindow的专栏 906

轻量级替代方案:用AIFlowy + Ollama在本地快速搭建一个可用的AI智能体平台

本文介绍了如何使用AIFlowy和Ollama在本地快速搭建轻量级AI智能体平台,涵盖从环境准备到智能体集成的全流程。通过简化部署步骤和优化性能,15分钟内即可完成搭建,适用于原型验证和小团队协作,显著提升开发效率。

weixin_29207533的博客 220

Linux Cgroups

Linux Cgroups详解,C语言代码测试

huchao_lingo的博客 1014

Mac M系列芯片用户必看:UTM虚拟机跑麒麟V10安装达梦DM8全流程避坑指南

本文为Mac M系列芯片用户提供了一份详尽的UTM虚拟机安装麒麟V10并部署达梦数据库DM8的实战指南。文章深入分析了在ARM架构下选择UTM而非其他虚拟化方案的原因,并详细拆解了从系统安装、SPICE工具配置、麒麟V10深度调优到DM8安装与避坑的全流程,重点解决了ARM环境下的兼容性与配置难题,帮助开发者高效搭建国产化开发测试环境。

ss78901的博客 940

深入解析STM32驱动AT25DF321A FLASH芯片的SPI通信与数据完整性验证

本文深入解析STM32通过SPI通信驱动AT25DF321A FLASH芯片的全过程,包括硬件连接、驱动函数实现与数据完整性验证。重点介绍SPI配置、读写操作优化及CRC校验方法,确保数据存储的可靠性,为嵌入式存储系统开发提供实用指南。

agile9scrum的博客 1065

cgroup底层技术研究二、cgroup源码解析(1)

cgroup底层技术研究二、cgroup源码解析(1)

phmatthaus的专栏 1502

手把手教你学simulink(16.2)--基于Simulink的高通滤波器(High-Pass Filter)项目

基于Simulink的高通滤波器(High-Pass Filter)项目的详细实例介绍。这个项目将重点放在高通滤波器的设计、实现和仿真上,帮助你理解和应用高通滤波器在信号处理中的作用。

MHD0815的博客 926

hadoop cgroup源码解读

版本:hadoop2.7.2 + centos 6.5现状想要理解hadoop cgroup,首先需要对linux cgroup有一定的了解,yarn目前的调度基于内存和cpu,但是cpu资源并没有像内存资源那样进行了严格的限制,一个container有可以占据很多的cpu资源。启用hadoop cgroup,可以参照我的博客hadoop启用cgroup还有一篇关于cgroup的介绍当前版本hado

刘光华的专栏 1478

Simulink仿真模块 -Scope

如果您将 Scope 模块放在具有锁定链接的库或者锁定的库中,当尝试打开示波器窗口时,Simulink 会显示错误。要显示某个库模块中的内部数据,请为库模块添加一个输出端口,然后将此端口连接到您模型中的 Scope 模块。当您在示波器内可视化多个基于帧的信号时,部分帧大小为 1 的信号采样可能不会显示。当在示波器内可视化多个基于帧的信号时,部分帧大小为 1 的信号采样可能不会显示。如果在仿真开始时波形视图关闭,则当在仿真后打开波形视图时,波形视图将显示附加的输入信号的仿真结果。

jk_101的博客 3792

【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止

转载请注明出处:http://blog.youkuaiyun.com/qq_26525215 本文源自【大学之旅_谙忆的博客】 在启动mysql服务时出现该错误: 本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止。mysql 版本 5.7.14 系统 win 7后来经过一系列的百度,谷歌,总算是解决了。首先,你需要把原来的服务删除:mysqld --remove mysq

谙忆-陈浩翔 12万+

hcsshim GCS客座代理源码解读:Linux虚拟机内的容器管家如何运转

如果你在 Windows 上跑过 Linux 容器,一定听过 hcsshim 这个名字。它是微软开源的 **Host Compute Service Shim**,负责把 Windows 宿主机与 Linux 虚拟机(UVM)之间的指令"翻译"成双方都能听懂的语言。而本文要深度解读的,正是 hcsshim 中最神秘、也最关键的一环——**GCS 客座代理(Guest Compute Service

gitblog_00794的博客 336

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

深入解读Docker底层技术Cgroup系列(5)——cgroup子系统cpuset

日期 内核版本 CPU架构 作者 2019.04.06 Linux-4.4 PowerPC LoneHugo 系列文章:https://blog.youkuaiyun.com/Vince_/article/details/89070001 初始化过程 在start_kernel中cgroup_init之前调用cpuset_init进行初始化; 初始化struc...

Hugo的博客 750

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

《Linux内核源码全景解读:从上电到用户态》之 目录

从源码入手解读 Linux-7.1.3

m0_37749564的博客 222

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Linux源码解读作业之文件篇

操作系统文件的内部表示有文件索引节点表(inode)、文件表(file)、用户文件描述符表(files),请你基于Linux4.19.X源代码,找出其中对应的数据结构定义,并描述一下这三者之间的关系,举例说明。 >

weixin_52922105的博客 1030

从内核源码角度理解cgroup cpu中的cfs_period_us、cfs_quota_us配置

摘要:Linux内核5.10.202版本中,CFS调度器通过定时器机制实现带宽控制。当定时器周期到期时,会调用sched_cfs_period_timer回调函数,将任务的剩余可用时间(runtime)重置为预设的配额值(quota)。该机制通过__refill_cfs_bandwidth_runtime函数实现,确保任务在每个周期内获得固定的CPU时间配额。定时器初始化时配置了回调函数,并在到期时触发时间补充,从而维持公平调度。

kiraskyler的博客 633

源码解读Linux的limits.conf文件

目录 目录 1 1.前言 1 2.PAM 2 3.pam_limits 2 4.limits.conf的由来 3 5.模块入口函数 4 6.解析limits.conf 6 7.生效limits.conf 7 8.systemctl和systemd 8 9.总结 10 附1:资源 11 附2:编译ninja 11 附3:使用meson编译system...

一见 8494

Linux内核高危漏洞CVE-2023-XXX1/XXX2深度解析与实战修复指南

Linux内核作为操作系统的核心,负责管理系统的所有关键资源,其安全性直接关系到整个计算环境的稳定。内核漏洞,特别是内存管理和进程调度子系统中的缺陷,往往涉及底层原理,如内存页的分配回收机制(swap/KSM)和进程的调度权重计算(cgroup)。这类漏洞的技术价值在于,攻击者可能利用它们进行权限提升或拒绝服务攻击,危害极大。其应用场景广泛,从云计算平台的虚拟机、容器集群,到企业数据中心的物理服务器,乃至嵌入式设备,只要运行受影响版本的Linux内核,均面临风险。本文聚焦于近期披露的两个高危内核漏洞(涉及内

diandingyin9417的博客 430

Linux CFS 的 psi_enqueue/dequeue:压力状态信息收集

Linux内核PSI压力监控机制深度解析 PSI(Pressure Stall Information)是Linux 4.20引入的核心特性,通过精确测量任务因CPU、内存或IO资源不足而停滞的时间,为系统性能分析提供了革命性的工具。本文深入剖析了PSI在CFS调度器中的实现机制,重点关注psi_enqueue和psi_dequeue两个关键函数: 核心原理:PSI通过跟踪任务在就绪队列中的等待时间来计算三类资源压力指标(CPU/Memory/IO),分为"部分压力"和"完全压

望获实时Linux系统 222

Android源码分析 - SystemServer(上)

本篇以android-11.0.0_r25作为基础解析上一篇文章Android源码分析 - Zygote进程,我们分析了Android 进程的启动和之后是如何接收消息创建App进程的在上一章中,我们说了,的一大作用就是启动,那么是怎么启动的呢?启动后又做了些什么呢?我们分上下两篇来分析,本篇介绍是如何启动的主要是用来创建系统服务的,譬如我们熟知的,都是由它创建的我们从上一篇文章的开始,类的源码路径为 之前在c++代码中JNI调用Java函数的时候,带了参数,在这里就会通过这个参数判断是否启动,接下来调用方法

qq_34231329的博客 749
上一篇: 研发管理:管人之根本---始终坚持以提高工程师的个人能力为首要目的
下一篇: 研发管理人员能力维度
Chayton_Chan
博客等级 码龄17年 8粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值