Messages in this thread | | | Date | Thu, 1 Sep 2022 13:29:47 +0200 | From | Frederic Weisbecker <> | Subject | Re: [PATCH v4 00/14] Implement call_rcu_lazy() and miscellaneous fixes |
| |
On Tue, Aug 30, 2022 at 06:44:51PM +0200, Uladzislau Rezki wrote: > Hello, Frederic. > > > > > Although who knows, may be some periodic file operation while idle are specific > > to Android. I'll try to trace lazy callbacks while idle and the number of grace > > periods associated. > > > > > Everything related to lazy call-backs is about not waking "nocb" > kthreads in order to offload one or i should say few callbacks > because it is more or less useless. Currently if incoming callback > is the only one, it will kick a GP whereas a GP will kick nocb_kthread > to offload.
Not sure this is only about not waking "nocb" kthreads. The grace period kthread is also awaken in !NOCB and has quite some work to do. And there, having a server expands the issue because you may have a lot of CPUs's extended quiescent states to check.
Also in !NOCB, pending callbacks retain the timer tick of a CPU (see rcu_needs_cpu()), and cpuidle relies on the tick to be stopped before allowing the CPU into low power mode. So a lazy callback may delay a CPU from entering into low power mode for a few milliseconds.
And I can observe those retained ticks on my idle box.
Thanks.
| |