总结下android性能提升方案
android 资源调度流程,大同小异,具体资源可以看 init.rc里面的配置文件
1 kenel层直接调度,直接对进程对应的名字进行比如cpu分配和设置进程优先级为fifo,cpuweight等,可以设置更多,更细致的参数
对应的驱动节点:proc/mysched/scene,proc/mysched/uid,proc/mysched/key_tasks
2 上层实现
init.rc里面配置(cgroup.json 文件里配置的补充):这里主要配置cpuset ,stune,blkio,memory,在这里新增对应的子目录
libprocessgroup/profiles/task_profiles.json :详细子系统参数的配置在这里
2.1 举例以上两个文件里创建自定义的目录并配置对应的参数比如:mycupset
2.2 通过jni提供给java层设置进去对应的app进程号
android_util_process.cpp里面setthreadgroupandcupset 里面设进去对应的cupset(需要添加对应的索引等等)
或者直接增加个接口写死cupset对应的目录值。
2.3 framwork base server下面搞一个封装类,主要是对process.java里面对调度接口进一步的封装
对setthreadscheduler 设置哪一类的优先级的封装,对cupset的设置的封装,以及配套的自定义cpuset对应的
核也要写进去,高优先级 就写大核对应的cpu id,低优先级就写小核的。(最好设两个自定义cpuset,一个高,一个低,这样就不用动态调整核数了)
比如 往/dev/cpuset/myboost/cpus 写 1-3 意思就是cpu1,cpu2,cpu3
2.4 再增加一些流程逻辑,比如只增强20秒,20秒后再还原回去
2.5 atms,oomadjuster 的调度行为需要屏蔽我们自定义的调用,最好 process里面对接口统一过滤,就是系统那一套如果遇到我们自定义的这一套,需要跳过
2.6 提供三方对应功能的接口,这个一般不会开放出此接口,暂不实现。