On Thu 20-01-22 13:07:55, Minchan Kim wrote: > On Thu, Jan 20, 2022 at 09:24:22AM +0100, Michal Hocko wrote: > > On Wed 19-01-22 20:25:54, Minchan Kim wrote: > > > On Wed, Jan 19, 2022 at 10:20:22AM +0100, Michal Hocko wrote: > > [...] > > > > What does prevent you from calling lru_cache_{disable,enable} this way > > > > with the existing implementation? AFAICS calls can be nested just fine. > > > > Or am I missing something? > > > > > > It just increases more IPI calls since we drain the lru cache > > > both upper layer and lower layer. That's I'd like to avoid > > > in this patch. Just disable lru cache one time for entire > > > allocation path. > > > > I do not follow. Once you call lru_cache_disable at the higher level > > then no new pages are going to be added to the pcp caches. At the same > > time existing caches are flushed so the inner lru_cache_disable will not > > trigger any new IPIs. > > lru_cache_disable calls __lru_add_drain_all with force_all_cpus > unconditionally so keep calling the IPI. OK, this is something I have missed. Why cannot we remove the force_all mode for lru_disable_count>0 when there are no pcp caches populated? -- Michal Hocko SUSE Labs