linux autogroup

一:概述

对于linux autogroup的作用,很多同学可能是听说过,但,并未验证过。

考虑下面场景,开两个terminal,T1和T2,在T1中运行进程P1,P1开启9个线程编译代码,在T2中运行进程P2,P2开启1个线程编译代码,那么,在top命令中查看cpu使用率时,P1和P2各占据 多少CPU呢?

我们的期待是:

1. 当未开启linux autogroup时,P1 90%,P2 10%

2. 当已开启linux autogroup时,P1 50%,P2 50%

让我们使用下面的配置来进行验证

marvin@vm:~$ uname -a
Linux vm 6.5.0-28-generic #29~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr  4 14:39:20 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
marvin@vm:~$ 

二:autogroup不符合预期

1. 未开启linux autogroup时,如下所示。确实 h1 90%, h2 10%。符合预期。

2. 已开启linux autogroup时,如下图所示,很不幸,依然是 h1 90%, h2 10%。不符合预期。

三:不符合预期的直接原因

在已开启linux autogroup的情况下,为什么CPU并未均分呢?从下图可以看到,无论是否开启autogroup,h1和h2的 "cpu,cpuacct" 都位于 /user.slice这个cgroup下面。

而,sched(7) - Linux manual page根据autogroup文档,进程只有当位于root cgroup下时,autogroup才会起作用。

sched(7) - Linux manual page

四:放入root cgroup,则一切符合预期

于是,我们开启autogroup,然后,启动进程h1和h2,然后,我们将两个进程都移动进root cgroup中。

果然看到效果啦,h1 9个线程,h2 1个线程,但,两者确实平分CPU的。很好,符合预期啦。

还需要注意到:

如果一开始autogroup是开启的,然后,我们将进程移动到root cgroup,于是,h1和h2各占50% CPU。

如果一开始autogroup是关闭的,然后,我们将进程移动到root cgroup,然后,我们再打开autogroup,此时,autogroup依然是无效的。(也就说,动态修改autogroup后,已移动进root cgroup中的进程 依然不会按着 开启autogroup 执行)。

五:systemd的原因?

为什么在不同terminal中运行的进程,却位于user.slice中呢?这应该是systemd的原因,当有了systemd之后,autogroup应该是无法起作用了,systemd会将terminal启动的进程都放置到user.slice中(而不是root cgroup)。但,具体为什么会这样,不知道,后面研究吧!

六:参考

2024年的Linux的进程优先级与nice值

Linux 的进程优先级与 nice 值 - 依云's Blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2982287.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp引入uniapp打包的H5跳转H5以及H5返回app方法

在app项目添加webview文件夹添加gridWebview.vue文件。代码如下 <template><view><web-view :src"src" message"getMessage" ></web-view></view> </template><script>export default {data() {return {src: ,…

Python中pyside2出现的pyside2 qt platform plugin could be in错误及其解决方法

系统平台&#xff1a;Win10 64bit python版本&#xff1a; python 3.8 使用pip install pyside2安装 pyside2 这是找不到QT平台的插件&#xff0c;这是环境变量QT_QPA_PLATFORM_PLUGIN_PATH出现错误 具体解决方法&#xff1a; 我们可以在每一段程序开始之前设定环境变量&…

设备需要支持GMS,Rockchip芯片,写入Attestation key方法 Google 申请keybox 检查是否已经写入Attestation key

写入Attestation key方法 首先通过3PL向谷歌申请Google keybox&#xff0c;拿到keybox后使用瑞芯微提供的打包工具 rkpacker打包成烧写的格式&#xff0c;再使用工具烧写到设备中&#xff0c;相关的工具在工程目录 1、申请Google keybox 比如test_keybox.xml 2、打包工具Lin…

MySQL多版本并发控制mvcc原理浅析

文章目录 1.mvcc简介1.1mvcc定义1.2mvcc解决的问题1.3当前读与快照读 2.mvcc原理2.1隐藏字段2.2版本链2.3ReadView2.4读视图生成原则 3.rc和rr隔离级别下mvcc的不同 1.mvcc简介 1.1mvcc定义 mvcc(Multi Version Concurrency Control)&#xff0c;多版本并发控制&#xff0c;是…

uniapp实现点击事件跳转页面

首先定义一个点击事件 这里采用的vue3的写法&#xff0c;然后写上触发事件后要跳转的路径 function jump() {uni.switchTab({url:/pages/bangong/index})} 到这里就简单的实现uniapp的点击跳转页面了

IIS部署跨平台.Net Core项目

IIS部署跨平台.Net Core项目 文章介绍: 大家好,我是行不更名,坐不改姓的宋晓刚,下面是IIS部署跨平台.Net Core项目的教程。 微信:15319589104 QQ: 2981345658 1.0我们部署的项目为.Net Core项目 2.0打开IIS管理器 3.0设置控制面板中的参数,程序 》程序和功能 》启用和…

如何用PHP语言实现远程语音播报

如何用PHP语言实现远程语音播报呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现语音播报。通过发送文本信息&#xff0c;来实现远程语音播报、语音提醒、语音警报等。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称1…

电脑虚拟机有免费的吗?常见的虚拟机工具软件有哪些?Parallels Desktop19最新版本好用吗

PD虚拟机&#xff0c;即Parallels Desktop&#xff0c;是一款专为Mac用户设计的虚拟机软件&#xff0c;由Parallels公司开发&#xff0c;它允许用户在Mac操作系统上无缝运行Windows、Linux以及其他操作系统&#xff0c;并在这些系统中安装程序或者游戏&#xff0c;无需重启即可…

kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ producer 实战

1、MQTT介绍 MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议&#xff0c;设计用于连接低带宽、高延迟或不可靠网络的设备。 MQTT 是基于发布/订阅模式&#xff08;Publish/Subscribe&#xff09;的协议&#xff0c;其中设备可以发布消息到一个主题&…

宏电“窨井卫士”为城市铸造坚实内涝防线

窨井的水情监测是预防城市内涝的重要手段&#xff0c;窨井水位、流量数据能直观地反映城市排水管网的运行状态。当窨井水位、流量持续上升时&#xff0c;往往表明排水系统可能已经或即将超过其处理能力&#xff0c;需要及时进行排查和处理&#xff0c;避免城市内涝的发生。 宏电…

【测试开发学习历程】python常用的模块(下)

目录 8、MySQL数据库的操作-pymysql 8.1 连接并操作数据库 9、ini文件的操作-configparser 9.1 模块-configparser 9.2 读取ini文件中的内容 9.3 获取指定建的值 10 json文件操作-json 10.1 json文件的格式或者json数据的格式 10.2 json.load/json.loads 10.3 json.du…

Quasar中的<q-select>相关信息

<q-selectoutlinedstyle"padding: 0;white-space: nowrap;overflow: clip"v-model"item":options"allGoodsType"option-value"rv_low_value"option-label"rv_meaning"emit-valuemap-options/>示例1&#xff1a; whit…

Seal^_^【送书活动第2期】——《Flink入门与实战》

Seal^_^【送书活动第2期】——《Flink入门与实战》 一、参与方式二、本期推荐图书2.1 作者简介2.2 编辑推荐2.3 前 言2.4 本书特点2.5 内容简介2.6 本书适用读者2.7 书籍目录 三、正版购买 一、参与方式 评论&#xff1a;"掌握Flink&#xff0c;驭大数据&#xff0c;实战…

HOOPS Commuicator:基于Web的交互式2D/3D图形轻量化引擎

在当前数字化时代&#xff0c;Web基础的3D应用程序正在成为行业标准&#xff0c;尤其是在工程和制造领域。Tech Soft 3D公司旗下的HOOPS Communicator正是针对这一需求设计的高级解决方案&#xff0c;提供了一套全面的工具&#xff0c;旨在帮助开发者构建复杂的3D工程应用程序。…

2024年【R2移动式压力容器充装】考试及R2移动式压力容器充装实操考试视频

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 R2移动式压力容器充装考试考前必练&#xff01;安全生产模拟考试一点通每个月更新R2移动式压力容器充装实操考试视频题目及答案&#xff01;多做几遍&#xff0c;其实通过R2移动式压力容器充装在线考试很简单。 1、【…

java -spring-引入外部属性文件-初入spring学习

引用外部属性文件 作用 分离配置与代码&#xff1a;将配置信息&#xff08;如数据库连接信息、服务器地址、端口号等&#xff09;从代码中分离出来&#xff0c;使得代码更加清晰和专注于业务逻辑的实现。这样&#xff0c;当配置信息需要变更时&#xff0c;我们无需修改和重新…

前端Vue中async/await、promise 和setTimeout工作原理和执行顺序

前端Vue中async/await、Promise 和 setTimeout 在 JavaScript 中都是处理异步操作的方法&#xff0c;但它们的工作原理和执行顺序有所不同。以下是它们的执行顺序和关系的简要说明&#xff1a; 同步代码执行&#xff1a;在任何异步操作开始之前&#xff0c;首先会执行所有的同步…

Dynamics365 视图搜索启用/禁用星号模糊搜索

默认该设置是开启的&#xff0c;位置在环境-你对应的组织-设置-特性中 一旦开启&#xff0c;则会阻止你使用*号模糊搜索&#xff0c;你按回车没有任何反应 如果要使用模糊搜索&#xff0c;则将该设置关闭&#xff0c;使用时只有下述这么一段警告&#xff0c;不会阻止你使用 全局…

3DE DELMIA Role: PSFEM - Structure Fabrication Engineer for Marine

Discipline: Process Engineering Role: PSFEM - Structure Fabrication Engineer for Marine 通过结构详细设计生成的基于规则的自动化工作准备&#xff0c;用于管理用于生产的制造可交付成果 所有结构设计零件的基于规则的工作准备和对应的生产可交付成果(工程图、机器数据&…

欢乐钓鱼大师一键钓鱼,解放双手!

《钓鱼欢乐大师》是一款让玩家体验钓鱼乐趣的游戏&#xff0c;在游戏中&#xff0c;玩家可以通过技巧和策略钓到各种各样的鱼。为了提高钓鱼效率&#xff0c;让玩家更快地钓到大鱼&#xff0c;下面将介绍如何利用脚本来优化游戏体验。 第一步&#xff1a;准备工作 创建云机&…