深入了解电源框架

观察而不影响或如何机会性地工作

开启硬件几乎总是会产生额外的功耗成本。通常,有些工作属于低优先级,可以延迟执行,因此我们不想仅为了执行这些工作而开启硬件,但如果硬件可用,我们希望执行这些工作。无线数据就是一个很好的例子,因为开启无线装置的开销相对较高,因此将低优先级传输与高优先级传输进行批处理具有优势。

电源框架通过电源级别之间的机会性依赖关系来实现这些场景。在讨论这些依赖项之前,我们先说明一下,之前讨论的所有依赖项都是我们所说的断言依赖项。具有断言依赖关系的电源级别的租约会激活其依赖的电源级别。这正是我们在协调部分中的示例中所述的情况。

当租用的功率级别具有机会性依赖关系时,所依赖的功率级别不会被激活。只有当对相应功率级别具有断言依赖性的其他内容也处于有效状态时,才能满足对功率级别的租用要求。

使用断言依赖项和机会性依赖项的图

在此图中,我们用虚线表示机会性依赖项。低优先级应用依赖于网络堆栈,但只有在高优先级应用存在时,其租约才能得到满足,因为高优先级应用的断言依赖项允许满足低优先级应用的择机依赖项。

与上图相关的图表,显示了如何移除断言依赖项

如果高优先级应用退出,低优先级应用的依赖关系将不再得到满足,我们在此处使用灰色虚线(而不是黑色虚线)来表示这一点。

依赖关系类型(即机会性与断言性)对级别激活/停用的顺序没有影响。依赖项类型影响级别是否变为有效,而不影响这些操作相对于级别的依赖项和被依赖项的顺序。因此,如果低优先级应用开始上传,系统会告知该应用何时应完成其工作,并且该应用可以在网络堆栈断电之前决定要执行的操作。

通常,机会性依赖项表示系统设计中缺少某些内容。在我们的示例中,机会性依赖关系表明,如果某个高优先级应用也在使用网络堆栈,则低优先级应用可以使用该网络堆栈,但最好是系统告知低优先级应用何时应该处于活跃状态。如果系统有合适的政策代理,该政策代理将对低优先级应用采取断言依赖关系,从而告知应用何时处于活跃状态。