Message ID | 20230323040037.2389095-1-yosryahmed@google.com (mailing list archive) |
---|---|
Headers | show |
Series | Make rstat flushing IRQ and sleep friendly | expand |
On Wed, Mar 22, 2023 at 9:00 PM Yosry Ahmed <yosryahmed@google.com> wrote: > > Currently, if rstat flushing is invoked using the irqsafe variant > cgroup_rstat_flush_irqsafe(), we keep interrupts disabled and do not > sleep for the entire flush operation, which is O(# cpus * # cgroups). > This can be rather dangerous. > > Not all contexts that use cgroup_rstat_flush_irqsafe() actually cannot > sleep, and among those that cannot sleep, not all contexts require > interrupts to be disabled. Too many negations in the above sentence is making it very confusing.
On Wed, Mar 22, 2023 at 9:10 PM Shakeel Butt <shakeelb@google.com> wrote: > > On Wed, Mar 22, 2023 at 9:00 PM Yosry Ahmed <yosryahmed@google.com> wrote: > > > > Currently, if rstat flushing is invoked using the irqsafe variant > > cgroup_rstat_flush_irqsafe(), we keep interrupts disabled and do not > > sleep for the entire flush operation, which is O(# cpus * # cgroups). > > This can be rather dangerous. > > > > Not all contexts that use cgroup_rstat_flush_irqsafe() actually cannot > > sleep, and among those that cannot sleep, not all contexts require > > interrupts to be disabled. > > Too many negations in the above sentence is making it very confusing. Sorry, this is indeed very confusing. I guess a better rephrasing is: Multiple code paths use cgroup_rstat_flush_irqsafe(), but many of them can sleep. Even among the code paths that actually cannot sleep, multiple ones are interruptible.