| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 【CGroupAndroid实践篇】1.Android CGroup使用现状 -> 正文阅读 |
|
[移动开发]【CGroupAndroid实践篇】1.Android CGroup使用现状 |
写在前面因为CGroup是内核中的一种机制,那么在Android Oreo及以前的版本,Android已经对CGroup进行支持,但有诸多限制。在Andorid Pie以后CGroup的使用将会更灵活。Android Pie及更高版本支持CGroup抽象层与任务配置文件搭配使用,在此基础上开发者可以对控制组中的任务进行限制和监控。 注意!接下来我们将基于Android Pie及其更高的版本进行梳理,博文中的代码参考基于最新的master分支。 一、Android CGroup描述文件CGroup会在系统early-init阶段初始化,包括CGroupV1和CGroupV2子系统的挂载路径,权限等。关于子系统的配置都定义在cgroups.json描述文件中,cgroup的初始化就是依据cgroups.json来进行初始化。 1.1 描述文件示例
1.1.1 Cgroups1.1.2 Cgroups21.1.3 端上路径? 1.2 CGroup子系统描述文件语法规则
CGroup版本:Cgroups指cgroup v1和Cgroups2指cgroup v2。在cgroup v2中,所有的控制器子系统均挂载在同一路径下(/sys/fs/cgroup)。 控制器名称:控制器名称一般跟随内核中支持的控制器名来定义。 挂载路径:因为内核中的cgroup通过虚拟文件系统将控制节点暴露给用户空间,所以要制定控制器的挂在路径。 访问模式:也就是我们常见的访问权限。(可选) UID:用户ID。(可选) GID:用户组ID。(可选) Optional:(可选)选择属性,设置为true,表示系统忽略内核不支持的cgroup子系统。这部分是由于必要的,因为有些平台释放的内核有可能会定制,或者对内核控制器子系统的支持情况也不尽相同。 二、Android CGroup配置文件配置文件的使用是最关键的,也是大部分开发者需要花费时间对cgroup控制器进行tuning的地方。这个文件用于描述应用于进程或任务(线程)上的规则。API如SetTaskProfiles和SetProcessProfiles会根据下面配置文件中定义的规则分别用于操作任务(线程)和进程。 2.1 配置文件示例
2.2 配置文件语法规则2.2.1 Attributes配置语法规则Attributes为特定的cgroup文件指定一个名称,它是Profiles中定义的引用,仅在Framework层需要直接访问相应文件,或Framework无法通过抽象层去使用Profiles时使用。在所有其他情况下,请使用任务配置文件;它们可以更好地分离所需行为及其实现详情。
2.2.2 Profiles配置语法规则下面是其中一个profile段的示例:
2.2.3 AggregateProfiles配置语法规则Android 12 及更高版本新增?AggregateProfiles?部分,是对Profile段的聚合,每个聚合Profile段都是一个或多个Profile段的别名。
三、profile触发方法Android12及其的更高的版本需要使用task_profiles命令来激活profile配置。
init.xxx.rc文件中的配置如下: 在Android 12以前使用writepid命令,如下:
?Android 12以后writepid命令将不再使用。 四、Android CGroup API介绍
五、其他在Android12及更高的版本中,我们可以根据AndroidAPI级别或从Vendor,来修改胡哦替换默认cgroup.json和task_profiles.json文件。 前面已经贴出了端上的配置文件的路径,常见如下如下: /system/etc/cgroups.json /system/etc/task_profiles/task_profiles_<API level>.json Android 系统会按照以下顺序加载 cgroup 和 task_profile 文件:
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 1:53:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |