Riassunto analitico
Non è facile per un sistema con vincoli di potenza risparmiare energia e, allo stesso tempo, essere sempre reattivo. In effetti, il modo più efficiente per risparmiare energia è mantenere i componenti il più possibile spenti. Per le CPU, ciò significa mantenere la frequenza più bassa possibile e gli stati di inattività il più profondi possibili. Questa politica di risparmio energetico porta a latenze elevate se i carichi di lavoro della CPU aumentano improvvisamente (quindi la latenza torna sotto controllo man mano che le prestazioni del sistema vengono aumentate a un livello compatibile con il nuovo carico).
Con i carichi di lavoro audio, questo problema può causare glitches percepibili e silence gaps. Abbiamo riprodotto questi problemi in modo deterministico con l'emulatore audio SynthMark, su una Dragonboard Qualcomm 845c, con kernel 5.10 e Android Open Source Project (AOSP).
Ancora più importante, abbiamo anche trovato una soluzione a questo problema. Si è rivelata straordinariamente efficace con i carichi di lavoro generati da SynthMark.
|
Abstract
It is not easy for a power-constrained system to save power and, at the same time, always be responsive. In fact, the most efficient way to save power is to keep components off as much as possible. For CPUs, this means keeping frequency as low as possible, and idle states as deep as possible. This power-saving policy leads to high latencies if CPU workloads happen to increase suddenly (then latency gets back under control as the system performance gets raised to a level compatible with the new load).
With audio workloads, this issue can cause perceivable glitches and silence gaps. We have reproduced these problems deterministically with the SynthMark audio emulator, on a Qualcomm 845c Dragonboard, with a 5.10 kernel and the Android Open Source Project (AOSP) master.
More importantly, we have also devised a solution to this problem. It proved remarkably effective with SynthMark workloads.
|