Linux 6.2 Likely To Enjoy Measurable Power-Savings While Idle Or Lightly Loaded
Google engineers have been working on this "lazy RCU" implementation given that the RCU mechanism can be a major consumer of power on battery-powered systems. Lazy RCU is about batching RCU callbacks and then flushing them after a timed delay or otherwise hitting memory pressure. Back in September at the Linux Plumbers Conference in Dublin was a presentation by Google engineer Joel Fernandes, Rushikesh Kadam of Intel, and Uladzislau Rezki of Sony on this Linux RCU optimization work:
There is also the slide deck (PDF) from that presentation.
The short story for Linux end-users is the Lazy RCU work can provide 5~10% power-savings for idle or lightly-loaded systems by this lazy/batching functionality. From the Lazy RCU patch series summing it up:
Implement timer-based RCU callback batching (also known as lazy callbacks). With this we save about 5-10% of power consumed due to RCU requests that happen when system is lightly loaded or idle.
By default, all async callbacks (queued via call_rcu) are marked lazy. An alternate API call_rcu_flush() is provided for the few users, for example synchronize_rcu(), that need the old behavior.
The batch is flushed whenever a certain amount of time has passed, or the batch on a particular CPU grows too big. Also memory pressure will flush it in a future patch.
Great work by Joel Fernandes and the others involved.
Lazy RCU presentation from LPC 2022.
Since the LPC event, RCU maintainer Paul McKenney last week sent out the lazy RCU patches as material intended for Linux 6.2. So unless some issues come up in the code, the Lazy RCU functionality will likely be merged for Linux 6.2 with its merge window / cycle starting in December and then reaching stable in early 2023.
Especially with today's rising energy prices, it will be interesting to see how this idle and lightly loaded optimization work helps out Linux on a variety of devices. I'll work on benchmarks when the Linux 6.2 cycle approaches.