![](https://img-blog.csdnimg.cn/2102d282e87e4d358bd126431cadebb2.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android的大管家,CGroup!
文章平均质量分 80
该系列专栏主要梳理了Linux CGroup的各个子系统的原理,以及用法,包括一些使用demo。帮助读者快速梳理如何利用内核的CGroup机制对系统资源进行管理。并通过对Android上的使用进行了一个总结
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
高桐@BILL
校园到职场,做过室内设计;WEB前后端,APP,嵌入式,LinuxAndroid,ChromiumOS,YunOS,智舱OS等开发。
行业遍及互联网,手机,IOT,汽车。
合作品牌如华为,中兴,OV,小米,三星,谷歌,联想,诺基亚,魅族,上汽,大众,腾讯,百度,网易,LG、HTC,沃达丰,AT&T,中移动,中国电信。
职业规划为操作系统方向,涉及不同框架、方案架构设计开发,可维可测,全维度的工程化;
目前主要涉及Android产品从App、FWK、HAL、Kernel、QNX全链路的垂直工程化,以及跨域产/研/测/项目/互联网产品的横向工程化;
展开
-
【CGroupAndroid实践篇】四、Native Service进程启动及控制组迁移
承接上一篇,在cgroup子系统初始化完成后,init会继续执行开机流程,且通过代哦用ExecuteCommand()函数。原创 2023-08-13 16:14:39 · 318 阅读 · 0 评论 -
CGroupAndroid实践篇】三、Android CGroup控制组初始化
创建控制组节点(也就是在cgroup子系统层级目录下创建子目录)修改权限等原创 2023-08-11 22:29:20 · 814 阅读 · 0 评论 -
CGroupAndroid实践篇】二、Android CGroup子系统初始化
本文基于Android12 AOSP源码,对Android CGroup的初始化流程进行一个详细的解读,这部分解读帮助我们了解Google在设计之初是如何将CGroup引入到Android等。实际上,无论是从json配置文件,还是libprocessgroup还是有一定的局限性,并没有完全释放CGroup为系统优化带来的强大能力。但了解其初始化流程为我们后面的客制化开发,并在运行时对资源进行适时管控,建立一个CGroup基础知识体系;...原创 2022-08-29 23:05:52 · 1135 阅读 · 0 评论 -
【CGroupAndroid实践篇】一、Android CGroup使用现状
CGroup是内核中的一种资源管控机制,那么在Android Oreo及以前的版本,Android已经对CGroup进行支持,但有诸多限制。在Andorid Pie以后CGroup的使用将会更灵活。Android Pie及更高版本支持CGroup抽象层与任务配置文件搭配使用,在此基础上开发者可以对控制组中的任务进行限制和监控。...原创 2022-05-20 10:09:14 · 5006 阅读 · 5 评论 -
【CGroup原理篇V1】十六、RDMA子系统
RDMA子系统 Remote Direct Memory Access Controller,限制进程对RDMA/IB资源的使用。原创 2022-04-09 01:30:00 · 716 阅读 · 0 评论 -
【CGroup原理篇V1】十五、Process Number(PIDS)子系统
资源有限,进程无限。原创 2022-04-09 00:30:00 · 3574 阅读 · 0 评论 -
【CGroup原理篇V1】十四、NET_PRIO子系统
Network priority cgroup为管理员提供了一个接口,并允许其可以动态的设置由各种各样应用程序产生的网络流量的优先级。原创 2022-05-25 12:32:50 · 513 阅读 · 0 评论 -
【CGroup原理篇V1】十三、NET_CLS子系统
Network Classifier CGroup提供了一个接口通过使用classid(class identifier)去对网络包进行标签化。Traffic Controller(tc)控制器被用来向不同的控制组分配不同的苏醒。Netfilter(数据包过滤机制或防火墙机制,如iptables)可以使用这个标签来在具体的数据包上执行一些列的操作。原创 2022-04-07 20:30:52 · 941 阅读 · 0 评论 -
【CGroup原理篇V1】十二、Memory子系统(三)
本篇基于cgroup memory子系统的内存实现对oom_kill查杀事件的监控和上报。原创 2022-04-11 23:03:11 · 645 阅读 · 0 评论 -
【CGroup原理篇V1】十二、Memory子系统(二)
前面简单介绍了memory controller,以及memory controller的发展史。也梳理了memory子系统的配置参数。下面来继续了解memory子系统的设计原理。原创 2022-05-26 12:53:05 · 332 阅读 · 0 评论 -
【CGroup原理篇V1】十二、Memory子系统(一)
Memory子系统 Memory Resource Controller,有些地方简称memcg,用于任务内存使用限制,并自动生成控制组内内存资源使用报告。原创 2022-04-11 03:45:00 · 727 阅读 · 0 评论 -
【CGroup原理篇V1】十一、Memory子系统(Memcg)实现备忘录
因为VM非常复杂(memcg就是其中一个原因)。memcg的行为也很复杂。这个文档描述了memcg的内部行为。该文档基于Linux 2.6.33-rc7-mm,所以其实现细节随着版本的发展可能会有改变。原创 2022-05-25 21:51:15 · 933 阅读 · 0 评论 -
【CGroup原理篇V1】十、HugeTLB子系统
HugeTLB控制器可以在cgroup文件系统被挂载的时候被创建。原创 2022-05-24 21:52:16 · 725 阅读 · 0 评论 -
【CGroup原理篇V1】九、FREEZER子系统
FREEZER子系统可以暂停或者恢复控制组中的进程。原创 2022-04-07 22:47:51 · 1229 阅读 · 0 评论 -
【CGroup原理篇V1】八、Devices子系统
devices子系统可以管控控制组中进程对设备的访问和存取。原创 2022-04-08 23:45:00 · 2354 阅读 · 2 评论 -
【CGroup原理篇V1】七、CPUSET子系统(二)
cpuset 子系统的控制组, 强制要求必须设置cpuset.cpus 和 cpuset.mems 参数。同样地,控制组通过mkdir系统调用或shell命令来创建。它的属性如flag,允许的cpu和memory,附加的任务可以通过写入下面所列出的参数文件即可。原创 2022-05-24 18:01:39 · 1125 阅读 · 0 评论 -
【CGroup原理篇V1】七、CPUSET子系统(一)
cpuset子系统提供了一种机制为进程分配CPU和内存结点,内存节点包括网络内内存节点。原创 2022-04-07 14:49:01 · 2247 阅读 · 0 评论 -
【CGroup原理篇V1】六. CPUACCT子系统
写在前面cpuacct CPU Accounting Controller 子系统会自动生成报告统计控制组所使用的CPU资源。该子系统支持多层嵌套控制组,支持统计当前控制组及其子控制组进程的CPU使用率。挂载子系统命令mount -t cgroup -ocpuacct none /sys/fs/cgroup/cpuacct在cpuacct层级下创建控制组 # cd /sys/fs/cgroup/cpuacct # mkdir g1 # echo $$ > g1/原创 2022-04-06 20:50:57 · 1159 阅读 · 0 评论 -
【CGroup原理篇V1】五、BLKIO子系统
blkio,Block IO Controller,指block io控制器或块IO子系统。IO控制策略就是用于控制特定设备的IO速率的一个节流策略。这种策略可以应用在内核通用块层(Generic Block Layer),也可以应用在页节点上和高级别逻辑设备,如设备映射器。原创 2022-04-05 23:29:03 · 2426 阅读 · 1 评论 -
【CGroup原理篇V1】四、CGroup V1子系统概况
简单介绍CGroupV1各个子系统概况,以及查询系统支持的子系统的方法等。原创 2022-05-21 14:44:22 · 764 阅读 · 1 评论 -
【CGroup原理篇V1】三、CGroup Kernel API介绍
每个内核子系统都希望钩入到通用cgroup系统都需要创建一个cgroup_subsys对象。这里有很多方法,有一些是cgroup机制的回调函数以及相应cgroup机制分配给cgroup子系统的ID。原创 2022-05-22 17:56:12 · 478 阅读 · 0 评论 -
【CGroup原理篇V1】二、CGroup的用法
cgroup v1的子系统的创建和使用,以及简单示例。原创 2022-05-21 18:34:40 · 1379 阅读 · 0 评论 -
【CGroup原理篇V1】一、CGroup 简介
写在前面CGroup,Control Group,是Linux Kernel对物理资源进行管控配置的一种机制,该机制允许聚集或分割进程集,包括他们将来所有的子任务到一个层级中,并附加指定的规则到该层级。CGroup包含多个子系统(如CPU,Memory,IO等),我们可以根据需要按照预先配置的一定规则对其子系统进行合理管控分配,以达到系统资源的精细化管理。因为硬件资源永远是有限的的,对于一些上游厂商来说都是真金白银,更不用说当前缺芯的大背景下,资源都要用在刀刃上。...原创 2022-04-04 21:37:50 · 1687 阅读 · 0 评论 -
【CGroup原理篇】2. CGroup管理模式
我们可以通过静态、动态的方式来配置cgroup以达到管控系统资源的目的。静态的方式就是在系统启动时通过系统服务挂载cgroup并加载cgroup配置策略。动态的方式就是根据系统运行时场景实时调整cgroup配置策略。一、CGroup管理模式CGroup是分层管理的,类似进程。子层级会继承父层级cgroup的属性。Linux系统中的所有进程都是通用父进程init的子进程,该进程在引导时由内核执行并启动其他进程。所有进程都归结到一个父进程,...原创 2022-04-04 23:25:17 · 1308 阅读 · 2 评论 -
【CGroup原理篇】3. CGroup使用指南
写在前面这里先从整体上概述cgroup的创建,挂载,参数配置和卸载,后面的章节中会一一介绍每个子系统的详细使用方法和使用案例。一、使用Linux命令管理CGroup1.1挂载cgroup临时文件系统mount -t tmpfs cgroup_root /sys/fs/cgroup1.2 创建挂载层级需要的目录mkdir /sys/fs/cgroup/cpuset1.3 挂载子系统cpuset到 mount -t cgroup -ocpuset cpuset.原创 2022-04-05 11:52:15 · 2758 阅读 · 0 评论 -
【CGroup原理篇】4. CPU子系统
写在前面CPU子系统通过CFS、RT两个调度程序来实现控制组对CPU使用的管理。完全公平调度程序(CFS) — 根据进程优先级 ∕ 权重或控制组分配CPU使用的调度程序,在控制组间按比例分配 CPU时间(CPU 带宽)。 实时调度程序(RT) — 对实时进程使用 CPU 的时间进行限定。一、CFS参数配置1.1 cpu.shares设置控制组中CPU可用时间的相对比例。参数值为大于等于2的整数。例如:在两个不同控制组,但cpu.shares=100的进程,获得的CPU时间是相同的。在一个原创 2022-04-06 17:18:59 · 1572 阅读 · 0 评论 -
【CGroup原理篇】14. MISC子系统
Misc子系统,Miscellaneous CGroup,杂项控制器,提供了一种机制来对不能像其他CGroup一样进行抽象的资源进行限制的一种机制。原创 2022-04-09 19:38:35 · 536 阅读 · 0 评论