Android 进程管理篇(五)-调度策略与优先级

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 进程管理篇(五)-调度策略与优先级相关的知识,希望对你有一定的参考价值。

参考技术A 接上篇cpuset,这篇来看看进程优先级与调度策略管理。

Linux中,优先级号一共有0-139,其中0-99的是RT(实时)进程,100-139的是非实时进程。
数字越低优先级越高。

SCHED_IDLE idle状态低优先级进程调度

先看Process中调度策略的划分,与上面介绍的一样。

首先在AMS中封装了FIFO和NORMAL的两个策略,NORMAL好说,看看FIFO在哪用到

这里Process.setThreadScheduler并没有太多的应用,我们直接来看优先级设置吧。else中将top app的UI线程与render线程都设置为TOP_APP_PRIORITY_BOOST优先级,nice值为-10,非常高。

这里主要调用androidSetThreadPriority方法

这里通过set_sched_policy来调整调度策略,并通过setpriority设置进程优先级。这里不特意区分进程与线程了,反正在linux中都是进程。

这里与前面的cpuset非常相似,依然是写节点,节点前面也提了就是:

那么这里又引入了一个schedtune子系统,简单介绍下:
schedtune是ARM/Linaro为了EAS新增的一个子系统,主要用来控制进程调度选择CPU以及boost触发。通过权重来分配CPU负载能力来实现快速运行。高权重意味着会享受到更好的cpu负载来处理对应的任务,换句话说你能享受相对更好的cpu运行性能。

简单梳理下schedtune和不同类型SchedPolicy之间的对应关系:

看下具体文件夹内容:

系统配置:
这里/dev/stune相关配置只做了这么一个

以上是关于Android 进程管理篇(五)-调度策略与优先级的主要内容,如果未能解决你的问题,请参考以下文章

进程管理-第二节23:进程调度的时机切换与过程方式调度器和闲逛进程

Linux进程优先级的处理--Linux进程的管理与调度(十八)

Android 进程管理篇(四)-cpu限制

Linux 内核进程优先级与调度策略 ① ( SCHED_FIFO 调度策略 | SCHED_RR 调度策略 | 进程优先级 )

Linux进程优先级的处理--Linux进程的管理与调度(二十二)

Linux进程优先级的处理--Linux进程的管理与调度(二十二)