Android进程调度cgroups的简单介绍
来源:互联网 发布:俄罗斯社交软件vk 编辑:程序博客网 时间:2024/05/20 10:13
cgroups的定义
维基百科的解释为:cgroups,其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。
Android中的cgroups
Android中的cgroups关于cpu的一般有两个,分别位于:
dev/cpuctl/ –位于前台的app
dev/cpuctl/bg_non_interactive –进入后台的app
其内部的各个文件的作用介绍如下:
- cpu.shares
cpu.shares文件中保存了整数值,用来设置cgroup分组任务获得CPU时间的相对值。举例来说,cgroup A和cgroup B的cpu.shares值都是1024,那么cgroup A 与cgroup B中的任务分配到的CPU时间相同,如果cgroup C的cpu.shares为512,那么cgroup C中的任务获得的CPU时间是A或B的一半。前台app的cpu.shares值如下:
root@XXXX:/dev/cpuctl # cat cpu.shares
cat cpu.shares
1024
而bg_non_interactive下的cpu.shares值为52
也就是说apps分组与bg_non_interactive分组cpu.share值相比接近于20:1。由于Android中只有这两个cgroup,也就是说apps分组中的应用可以利用95%的CPU,而处于bg_non_interactive分组中的应用则只能获得5%的CPU利用率。
- cpu.rt_period_us与cpu.rt_runtime_us
cpu.rt_period_us用来设置cgroup获得CPU资源的周期,单位为微秒。 cpu.rt_runtime_us用来设置cgroup中的任务可以最长获得CPU资源的时间,单位为微秒。最长的获取CPU资源时间取决于逻辑CPU的数量。比如cpu.rt_runtime_us设置为200000(0.2秒),cpu.rt_period_us设置为1000000(1秒)。在单个逻辑CPU上的获得时间为每秒为0.2秒。 2个逻辑CPU,获得的时间则是0.4秒。
在Android中,一个应用(进程)既可以由前台进程切换到bg_non_interactive,也可以切换回来。
Activity:当一个Activity处于可见的状态下,那么这个应用进程就属于apps分组。
Service:当Service调用startForeground方法后,那么这个应用进程则是归类于前台进程。
如何确定进程所属的cgroups
步骤1: adb shell进入已经root的Android设备终端,获得进程的pid,如
root@XXXX:/proc/6566 # ps | grep -i “video”
u0_a70 6566 498 1514624 79340 SyS_epoll_ 7f9ea9cba4 S com.android.videoplayer
我们获得了一个视频播放器的进程pid为6566
步骤2: adb shell cat proc/6566/cgroup
结果若为:
cat cgroup
2:cpu:/bg_non_interactive(后台非交互进程)
1:cpuacct:/uid_10070/pid_6566
若结果为:
2:cpu:/(前台进程)
1:cpuacct:/uid_10070/pid_6566
- Android进程调度cgroups的简单介绍
- Android进程调度cgroups的简单介绍
- Android中进程线程调度的命令之cgroups
- cgroups 介绍
- 进程的简单介绍
- [模拟] 简单的进程调度模拟
- linux进程调度介绍
- linux进程调度介绍
- linux进程调度介绍
- linux进程调度介绍
- Jstorm 调度硬件资源cgroups
- Android的内存,进程调度管理
- Android平台上的进程调度探讨
- Android平台上的进程调度探讨
- Android的内存,进程调度管理
- Linux内核2.6的进程调度系统介绍
- cgroups管理进程磁盘io
- 负载均衡,cgroups,RT补丁-《Linux进程、线程和调度》系列9.22日第四节课ppt分享
- 二维码的生成细节和原理
- nginx 匹配配置文件启动
- 第12章课后练习5
- 手机滑动分页
- 去重并且合并联系人
- Android进程调度cgroups的简单介绍
- 时间、延迟及延缓操作
- Android Hawk数据库 github开源项目
- Spring MVC 同样拦截器。
- 【iOS】被忽略的main函数
- TextView显示图片,阴影,字体加粗,多种颜色字体,自定义字体
- python Lintcode 刷题(一)
- GradientDrawable和AttributeSet自定义控件
- iOS中代理属性为什么要用Weak修饰?