Google engineer Saravana Kannan has posted a set of patches to better optimize async device suspend and resume handling within the Linux kernel. With these patches there are “significant improvements” to async device suspend/resume with testing being done on a Google Pixel 6 smartphone but other devices stand to benefit too.
Kannan explained in the new patch series:
“You can remove a lot of the overhead by doing a breadth first queuing of async suspend/resumes. That’s what this patch series does. I also noticed that during resume, because of EAS, we don’t use the bigger CPUs as quickly. This was leading to a lot of scheduling latency and preemption of runnable threads and increasing the resume latency. So, we also disable EAS for that tiny period of resume where we know there’ll be a lot of parallelism.
On a Pixel 6, averaging over 100 suspend/resume cycles, this patch series yields significant improvements.”
Indeed the results shared some a nice improvement to both the suspend and resume times:
There is also an LPC 2024 presentation by Saravana Kannan on this async suspend/resume optimization work. Saravana also notes there still is room for further suspend/resume performance optimization work that will be pursued, assuming these current patches make it into the upstream Linux kernel.