On Fri, Apr 1, 2022 at 1:39 AM Vaibhav Jain <vaibhav@xxxxxxxxxxxxx> wrote: > > > Yosry Ahmed <yosryahmed@xxxxxxxxxx> writes: > > From: Shakeel Butt <shakeelb@xxxxxxxxxx> > > > > Introduce an memcg interface to trigger memory reclaim on a memory cgroup. > <snip> > > > + > > + while (nr_reclaimed < nr_to_reclaim) { > > + unsigned long reclaimed; > > + > > + if (signal_pending(current)) > > + break; > > + > > + reclaimed = try_to_free_mem_cgroup_pages(memcg, > > + nr_to_reclaim - nr_reclaimed, > > + GFP_KERNEL, true); > > + > > + if (!reclaimed && !nr_retries--) > > + break; > > + > > + nr_reclaimed += reclaimed; > > I think there should be a cond_resched() in this loop before > try_to_free_mem_cgroup_pages() to have better chances of reclaim > succeding early. > Thanks for taking the time to look at this! I believe this loop is modeled after the loop in memory_high_write() for the memory.high interface. Is there a reason why it should be needed here but not there? > <snip> > > -- > Cheers > ~ Vaibhav