嵌入式实时系统多核负载均衡调度架构
背景介绍
目前嵌入式开发为了追求稳定性、可靠性,多核处理器多使用静态任务调度架构,静态分配CPU、进程(APP)、线程(Task)、任务(runnable)的多层调用关系树。系统在低负载场景十分稳定,但高负载场景无法实时优化多核负载,造成任务延迟。
本文介绍了一种多核实时负载均衡的调度架构,均衡多核CPU资源,提高任务处理效率和系统实时响应能力。
架构
- 任务激励可配:中断、定时器(周期和功能分类);
- CPU通过激励源上下文和任务Manager,在任务队列中获取和占据合适任务,完成后释放;
- CPUs清空激励源相关任务集,并等待下一个激励源;
- CPU在任务执行过程中发布新的任务和产生中断;
- 任务锁保护任务不被重入执行;
- 任务队列初始化时需要配置启动任务集;
优点
- CPU只需要配置中断和定时器即可,任务调度解耦处理器架构;
- 激励的处理由CPUs共同完成,完全的负载均衡,单一CPU负载降低,延时减少;
- 单一CPU失效,其余CPUs不受影响,可继续完成任务,乃至分析失效CPU原因,系统不会失效。