LWN: 直接针对cgroup创建新进程!

【小白教程】本地部署VLM-R1模型(使用Docker) 通过Docker本地部署VLM-R1大模型,详细教程。 阅读详情

关注了就能看到更多这么棒的文章哦~

Cloning into a control group

By Jonathan Corbet
December 20, 2019

原文来自:https://lwn.net/Articles/807882/

Linux control-group机制(即cgroup)是用来把简化进程加入某个组里面去的操作,或者在组之间移动。用了cgroup之后,这些操作就简化成只要在cgroup文件系统目录里面相应的cgroup.procs文件里写入PID(进程ID)即可。不过,这只对已经存在的进程有效。Christian Brauner提出了一组patch来支持在创建一个新进程的时候就把它放入cgroup。

讨论实现细节之前,肯定有人要问为什么需要这个功能,毕竟cgroup用到现在也都没有用过这个功能。其实原因是目前的kernel对于基于cgroup的进程管理器来说有race condition风险。进程管理器可以创建进程,加入group,不过它没法限制在这两点之间的进程行为。例如,这个进程可能在加入某个group从而进行资源统计之前就已经执行了一段了。这个问题其实并不大,不过希望获取精确统计信息的人们对此一直觉得很别扭。

如果在进程诞生时就把他放到合适的cgroup里去,就不会有这个问题了。这样也可以支持在进程创建时就把它放到一个frozen group里,这样它的初始状态就是frozen状态,在进程管理器允许它执行之前都不会运行了。此外,按Brauner所说,可以“简化容器创建以及逻辑执行的过程”。

只有cgroup v2才可以支持在clone进程的时候直接加入cgroup,并且需要调用最新加入的clone3()系统调用:

    int clone3(struct clone_args *args, size_t size);

因为clone3()里面所有参数都是放到一个结构里面的,所以函数原型非常简单,也增加了可扩展性。这个patch就利用了这一点,对struct clone_args增加了一个新的成员:

    u64 cgroup;

这个成员当然会增大clone_args结构的size。对clone3()的调用都需要传入size参数来指定clone_args结构的长度,这样kernel就可以确定调用者传入的结构是否包含cgroup成员。因此,新加的cgroup成员完全不会破坏原有代码的兼容性。

如果希望创建的进程加入其他cgroup(而不是父进程的cgroup),那么就把对应的cgroup目录的文件描述符作为cgroup成员变量的内容传递进来,并且对flag成员设置CLONE_INTO_CGROUP标志。正常的话,子进程创建出来时就会在指定的cgroup里,否则调用就会失败。

用这种方式把进程加入cgroup的话,也需要遵守其他那些正常规则。例如,进程只可以被放入叶子节点,而不可以放入中间层的节点,否则也会报错。类似的,进程的所有线程通常也需要放入相同的cgroup里(不过thread mode在某些情况下可以不遵循这一点),所以线程们如果被错误地分开了,也会报错。

这组patch set还是刚刚出炉的,第一次发布出来,社区肯定还需要一些时间来review。此功能确实有用,所以预计不会有太多反对。这一版是否能通过review还需要拭目以待。不过很大可能它可以在近期合入upstream。

全文完

LWN文章遵循CC BY-SA 4.0许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注LWN深度文章以及开源社区的各种新近言论~

零承诺的启动之路:详解 SAP BTP 的 Pay-As-You-Go for SAP BTP(含案例与迁移策略) SAP BTP的Pay-As-You-Go(PAYG)模式为零承诺的按需付费方案,适合PoC和小规模上线场景。它提供生产环境直接启用服务的能力,按月后付标准目录价,无预付和折扣。PAYG可与BTP企业协议(BTPEA/CPEA)混合使用,用量稳定后可平滑迁移至CPEA获取更好财务条款。关键优势在于灵活开启/关闭服务,支持通过SAP Discovery Center估算费用,并配合成本治理工具控制支出。该模式适用于创新项目初期,当业务规模可预测时再考虑转为承诺型消费模式。 阅读详情

相关推荐

vmware虚机Debian10磁盘空间无损扩容

该方法不适和LVM的磁盘管理 备份 一定要先做备份,虚机中直接创建一个快照备份 vm上增加空间 初始给的40G空间不够需要扩容,vm那给系统添加到100G 重新分区 查看当前分区情况 sudo fdisk -l

lms99251的博客 7454

容器技术——Cgroup

物理机利用率上去了;服务器宕机了,所有应用都会宕机;需求:1. 把单台物理机的利用率提高;2. 把应用分散到逻辑上不同的主机中,应该做到不同应用的环境隔离,分离出不同职能的应用,如负责负载均衡,负责数据库…的应用虚拟化技术:为了同时满足上述两个需求,于是诞生了虚拟化技术,例如win下的vmware workstation,linux下的kvm,还有esxi、xen等;

General_zy的博客 3319

Cadence创建异形焊盘教程(详细操作)

背景:一些常见的矩形/圆形焊盘,设置参数就可。碰到非规则的一些焊盘,那只能用Cadence Allegro PCB来画咯。 一、新建图形 【File】——>【New…】 弹出如下窗口,选择绘制的类型Shape symbol、路径,输入名字 二、设置参数 【Setup】——>【Design Parameters…】 Enhanced display modes:增强型显示模型。全部勾选上。 在【Design】设置单位为mm 设置偏移量(-50,-50) 三、绘制图形 1、找到原点,即参考

qq_42057393的博客 2万+

linux内核设计和实现第三章节-----进程管理

前言: 为什么要学习linux内核,随着ebpf的深入,对linux内核的熟悉程度,将会直接决定我们的kprobe的使用情况,尽管linux内核已经帮我们通过map定义了钩子 参考文献: <<linux内核设计和实现>> 参考网址: linux内核线程_huangweiqing80的博客-优快云博客_内核线程 3.1 进程 进程一般包括:可执行程序的代码,像打开的文件、挂起的信号,内核内部处理数据,处理器状态,一个或者多个具有内存映射的内存地址空间以及一个或者多个

qq_32783703的博客 1457

python特征选择pso_【来点干货】机器学习中常用的特征选择方法及非常详细的Python实例...

花费了很长时间整理编辑,转载请联系作者授权,违者必究。特征选择(Feature selection)是在构建预测模型的过程中减少输入变量的一个过程。它是机器学习中非常重要的一步并在很大程度上可以提高模型预测精度。这里我总结了一些机器学习中常见的比较有用的特征选择方法并附上相关python实现code。希望可以给大家一些启发。首先,我们为什么要进行特征选择呢?它有以下几个优点:减少过拟合:冗余数据常...

weixin_39927158的博客 1161

【蓝桥杯——单片机学习笔记】十三.点阵(STC15F2K60S2)

一.点阵内部图 点阵的有两种,分为共阴和共阳(与数码管类似,后续代码根据共阳点阵编写)。点阵的控制主要是每行和每列电平的控制。如图,以共阳为例:若要使左上角的灯亮,则第一行输出高电平(其他行均为低电平),第一列输出低电平(其他列均为高电平)。 二.原理图 与数码管共用接口,所以数码管和点阵的显示只能选一个使用! 原理图中点阵的接口R5即代表第5行(Row),C8即代表第8列(Column)。通...

默默无闻小菜鸡的博客 2011

cgroup文档

6.4.0-rc2 内核翻译

kuki_xie的博客 1549

CarPlay wired(USB)连接方案

CarPlay的wired(USB)的连接方案要求车载设备至少要支持USB2.0 Hi-Speed,支持USB Host Mode,该模式要求车载设备能够工作在USB device模式下,因为Apple设备在CarPlay中是作为USB Host的。而通常情况下,车载设备USB是工作在USB Host模式的,而外接的USB设备是工作在USB Device模式的,因而在这种情况下的CarPlay wired(USB)连接方案中就需要进行USB的模式切换。模式切换完成后便是Apple设备(USB HOST)的枚

Ke8323的博客 1万+

cgroup从入门到懵圈——cgroup使用举例

1 基本用法 通过cgroup虚拟文件系统可以创建,修改,使用cgroup。 挂载一个关联所有子系统的cgroup 层级树可以使用以下命令: mount -t cgroup xxx /sys/fs/cgroup xxx不会被cgroup的代码处理,但是会呈现到/proc/mounts或者mount命令输出中。 注意:有些子系统在用户配置之前...

Take Easy,Work Hard! 1万+

脑机接口(BCI)从原理到开发实战 07|运动想象BCI实战:基于BCI Competition IV 2a数据集

本文基于BCI Competition IV 2a数据集,详细介绍运动想象脑机接口系统的全流程实现。首先概述了该数据集的实验范式、参数特点和优势,然后指导环境准备与数据下载。通过代码示例展示了数据加载、事件标记提取和信号可视化方法。重点构建了完整的预处理流水线,包括通道选择、重参考、带通滤波(8-30Hz)和ICA去伪迹等关键步骤。文章旨在帮助读者将零散的BCI知识整合为完整的实战项目,掌握从原始脑电数据到运动意图解码的核心技术。

小明的博客 846

《中国电信运营商骨干网:历史、现状与未来演进》系列 第一篇:中国骨干网全景图:一级运营商与专用网络的演进

揭秘国家信息高速公路!一文读懂什么是骨干网,它如何支撑我们的数字生活,以及电信、联通、移动、广电等巨头如何构建这张“国家级动脉”。

maqh_csdn的博客 2036

cgroups

参考:https://tech.meituan.com/cgroups.html 使用场景      限制进程对cpu、mem等资源的使用,比如限制某个进程在八核机器上最多使用六核 Cgroups子系统 cpu子系统:限制进程的cpu使用率 cpuset子系统:为进程分配单独的cpu节点或者内存节点 memory子系统:限制进程的mem使用率 devices子系统:限制进程能够访问哪...

smilesundream的博客 751

ATT MTU 交换机制:提升 BLE 数据传输效率的关键

在低功耗蓝牙(BLE)技术的面试中,ATT MTU 交换机制始终是高频考点。无论是芯片厂商的固件开发岗,还是物联网设备的协议栈调试岗,面试官都爱通过这个知识点考察候选人对 BLE 数据传输底层逻辑的理解。本文将系统梳理核心考点,结合历年真题详解应答思路,轻松应对这类问题。​

byte轻骑兵的技术小窝 2411

LWN:glibc里面创建进程可以不用担心race condition了!

关注了就能看到更多这么棒的文章哦~Race-free process creation in the GNU C LibraryBy Jonathan CorbetSeptember 1, 2023ChatGPT assisted translationhttps://lwn.net/Articles/943022/pidfd API 近年被添加到内核中,希望提供一个无竞争的方式(race-fre...

Linux News搬运工 956

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LWN: 针对突发情况改善CFS分配器!

关注了就能看到更多这么棒的文章哦~The burstable CFS bandwidth controllerBy Jonathan CorbetFebruary 8, 2021DeepL...

Linux News搬运工 954

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LWN:Dentry negativity

关注了就能看到更多这么棒的文章哦~Dentry negativityByJonathan CorbetMarch 12, 2020原文来自:https://lwn.net/Artic...

Linux News搬运工 439

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LWN:5.7内核合并窗口第二部分!

关注了就能看到更多这么棒的文章哦~5.7 Merge window part 2ByJonathan CorbetApril 13, 2020原文来自:https://lwn.net/...

Linux News搬运工 724

LWN:用SCHED_EXT和IOCost改进性能!

关注了就能看到更多这么棒的文章哦~Improving performance with SCHED_EXT and IOCostBy Daroc AldenApril 1, 2024SCALEChatGLM translationhttps://lwn.net/Articles/966618/在今年的SCALE大会上,来自 Meta 的 Dan Schatzberg 和 Tejun Heo 先后连...

Linux News搬运工 979

LWN: 利用pidfd_getfd()来抢夺文件描述符

关注了就能看到更多这么棒的文章哦~Grabbing file descriptors with pidfd_getfd()ByJonathan Cor...

Linux News搬运工 1111

LWN:GNU C 库 2.39 版本!

关注了就能看到更多这么棒的文章哦~GNU C Library version 2.39By Daroc AldenFebruary 6, 2024Gemini translationhttps://lwn.net/Articles/960309/GNU C 库 (glibc)发布了 2.39 版,1 月 31 日,其中包含了些新特性。值得一提的重要内容包括用于孵化(spawning)子进程的新函...

Linux News搬运工 731

LWN回顾: Android内存管理

Android memory managementByJonathan Corbet,May 1, 2019,LSFMMAndroid系统的设计核心目标就是要能够让用户体验到丝滑一...

Linux News搬运工 310

LWN:为 sched_ext 引入子调度器

换句话说,父调度器控制给定工作负载(由控制组表示)何时可以运行,子调度器控制构成该工作负载的进程如何访问 CPU,而 CPU 控制器则负责它们运行可用的 CPU 时间总量。子调度器的工作扩展了这一理念,认为没有任何调度器——甚至是 sched_ext 调度器——能够为给定系统可能运行的每种工作负载都提供最优性能。然而,在拥有多个调度器的系统中,允许一个子调度器将进程抛入全局 FIFO 队列可能会干扰其他子调度器。因此,当使用子调度器时,如果存在父调度器,它将继承进入旁路模式的子调度器中的任务。

Linux News搬运工 100

LWN: 最新的I/O带宽仲裁算法io.weight

点击上方蓝色字关注我们~The io.weight I/O-bandwidth controllerByJonathan CorbetJune 28, 2019kern...

Linux News搬运工 2769

LWN:futex robust list 的 API 变更

他提到的另一个细节是,在执行操作(获取或释放锁)期间,但在链表更新之前,futex 可以被放入列表头的一个“待处理 (pending)”字段中,以便在此时发生崩溃时仍能进行清理。但正如 André Almeida 在东京举行的 2025 年 Linux Plumbers Conference (LPC) 的 “Gaming on Linux” 微型会议 (microconference) 会话 (session) 中所描述的那样,该 API 存在许多不同的问题。他说,出于几个原因,需要一个新的 API。

Linux News搬运工 82

Linux进程优先级与系统调优实战指南

进程优先级是操作系统资源分配的核心机制,Linux通过PRI和NI值实现动态调整。理解进程调度原理有助于优化系统性能,特别是在高负载场景下。通过nice和renice命令可以调整普通进程的CPU占用,而实时任务则需要chrt工具配置。实际应用中,结合top监控和cgroup限制分析,能有效解决MySQL等服务的性能瓶颈问题。本文以电商系统优化为例,展示如何通过优先级调整、InnoDB参数优化等手段将查询耗时降低90%,为运维人员提供可直接复用的技术方案。

weixin_34279579的博客 389

Linux内核工程师校招笔试全攻略:核心知识点与备考路线

操作系统是计算机软件体系的基石,而Linux内核则是其最核心的实现。理解进程管理、内存管理、文件系统与并发同步等基础机制,是深入底层技术的关键。内核工程师需要掌握从系统调用到硬件驱动的完整链路,包括CFS调度器、虚拟内存、RCU同步、epoll网络模型等高频考点。这些知识不仅服务于高性能服务器、云计算与容器隔离等场景,也是解决线上并发问题的重要工具。针对校招笔试,系统梳理内核核心机制、结合源码实验与场景分析训练,能将零散知识点串联成完整的解题思路。围绕Linux内核工程师岗位的考察逻辑,从操作系统原理、内核

weixin_34116482的博客 338
上一篇: LWN:对user-space pages进行明确的pin操作!
下一篇: LWN:LWN的2020年预测!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值