如何修改android内核进程调度器?

How to modify android kernel process scheduler?

我想自己修改android调度器"CFS"。

我想为通过启发式或其他方式区分的用户交互任务分配实时优先级。

所以,我只想修改 android 内核,构建修改后的内核并研究性能。

我该怎么做?

从安全的角度来看,不太可能允许修改 Android 的内核调度策略。但是基于 "realtime" 的各种特性,你总是可以使你的程序满足这些要求:

一个。响应能力:通过确保输入循环尽可能高效并始终尽可能快地响应输入。在 Linux 内核中,这是通过 "voluntary preemption" 完成的。

b。低延迟:通过将每个作业拼凑成尽可能小的一块,以便可以将控制传回以响应输入,或者在音频的情况下,可以在时钟的精确开始时发出控制(SCHED_DEADLINE调度)。 Android 确实有一些 API 为此:

http://source.android.com/devices/audio/latency_design.html

一般来说,更改优先级对于解决实时需求并不理想(例如,为一个进程赋予更高的优先级可能最终导致另一个进程性能下降)。实际做了什么(例如,LynxOS,导弹系统中使用的实时 OS,不是 Linux,但它的某些组件如 TCP/IP 来自 FreeBSD)是调整系统,使其在具有大量备用硬件容量的水平上运行。所以在 LynxOS 很多系统阈值限制很低,所以硬件总是有足够的空闲来快速响应输入事件。

https://github.com/keesj/gomo/wiki/AndroidScheduling

Android Low latency Audio using SoundPool

Low-latency audio playback on Android