cpuidle 根据预计空闲时间在多个低功耗状态间选择。状态越深,节能越多,但进入、退出延迟与恢复成本也越高。RISC-V 平台可能只用本地 WFI,也可能通过固件和电源域进入更深状态;内核需要知道每种状态的收益和代价,才不会为了省一点电而错过下一个截止期。
状态表是驱动和固件之间的契约
cpuidle 驱动向内核描述每个状态的名称、进入方法、target residency 和 exit latency。数字不能凭空填写:过小会让 governor 频繁选择收益很低的状态,过大则可能错过节能机会;更危险的是低估退出延迟,让实时任务在不可接受的时间后才开始执行。
不同 RISC-V SoC 的固件可能决定了 WFI 之后能否关闭时钟、如何接收唤醒中断、是否支持更深的 suspend。驱动应以平台文档和实际测量为依据,不能把另一块板子的状态表原样复制过来。
实时任务先看尾延迟,再谈节能
对周期控制或低延迟网络,先测 CPU 从 idle 被唤醒的长尾。若深状态带来偶发尖峰,可以限制该 CPU 的 cpuidle 状态、调整任务亲和性或让实时核保持较浅状态。节能和实时性不是绝对对立,但需要按角色分配 CPU,而不是给所有核套同一条策略。