Re: [PATCH v2 7/9] workingset: memcg: sleep when flushing stats in workingset_refault()

From: Yosry Ahmed
Date: Thu Mar 30 2023 - 03:56:17 EST


On Thu, Mar 30, 2023 at 12:50 AM Michal Hocko <mhocko@xxxxxxxx> wrote:
>
> On Thu 30-03-23 00:42:36, Yosry Ahmed wrote:
> > On Thu, Mar 30, 2023 at 12:39 AM Michal Hocko <mhocko@xxxxxxxx> wrote:
> > >
> > > On Tue 28-03-23 22:16:42, Yosry Ahmed wrote:
> > > > In workingset_refault(), we call
> > > > mem_cgroup_flush_stats_atomic_ratelimited() to flush stats within an
> > > > RCU read section and with sleeping disallowed. Move the call above
> > > > the RCU read section and allow sleeping to avoid unnecessarily
> > > > performing a lot of work without sleeping.
> > >
> > > Could you say few words why the flushing is done before counters are
> > > updated rather than after (the RCU section)?
> >
> > It's not about the counters that are updated, it's about the counters
> > that we read. Stats readers do a flush first to read accurate stats.
> > We flush before a read, not after an update.
>
> Right you are, my bad I have misread the intention here.
>
> Acked-by: Michal Hocko <mhocko@xxxxxxxx>

Thanks!

>
> --
> Michal Hocko
> SUSE Labs