On Mon 17-06-19 17:57:16, Alastair D'Silva wrote:
> > -----Original Message-----
> > From: Michal Hocko <[email protected]>
> > Sent: Monday, 17 June 2019 5:47 PM
> > To: Alastair D'Silva <[email protected]>
> > Cc: [email protected]; Arun KS <[email protected]>; Mukesh Ojha
> > <[email protected]>; Logan Gunthorpe <[email protected]>; Wei
> > Yang <[email protected]>; Peter Zijlstra <[email protected]>;
> > Ingo Molnar <[email protected]>; [email protected]; Qian Cai
> > <[email protected]>; Thomas Gleixner <[email protected]>; Andrew Morton
> > <[email protected]>; Mike Rapoport <[email protected]>;
> > Baoquan He <[email protected]>; David Hildenbrand <[email protected]>;
> > Josh Poimboeuf <[email protected]>; Pavel Tatashin
> > <[email protected]>; Juergen Gross <[email protected]>; Oscar
> > Salvador <[email protected]>; Jiri Kosina <[email protected]>; linux-
> > [email protected]
> > Subject: Re: [PATCH 4/5] mm/hotplug: Avoid RCU stalls when removing large
> > amounts of memory
> > 
> > On Mon 17-06-19 14:36:30,  Alastair D'Silva  wrote:
> > > From: Alastair D'Silva <[email protected]>
> > >
> > > When removing sufficiently large amounts of memory, we trigger RCU
> > > stall detection. By periodically calling cond_resched(), we avoid
> > > bogus stall warnings.
> > >
> > > Signed-off-by: Alastair D'Silva <[email protected]>
> > > ---
> > >  mm/memory_hotplug.c | 3 +++
> > >  1 file changed, 3 insertions(+)
> > >
> > > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index
> > > e096c987d261..382b3a0c9333 100644
> > > --- a/mm/memory_hotplug.c
> > > +++ b/mm/memory_hotplug.c
> > > @@ -578,6 +578,9 @@ void __remove_pages(struct zone *zone, unsigned
> > long phys_start_pfn,
> > >           __remove_section(zone, __pfn_to_section(pfn),
> > map_offset,
> > >                            altmap);
> > >           map_offset = 0;
> > > +
> > > +         if (!(i & 0x0FFF))
> > > +                 cond_resched();
> > 
> > We already do have cond_resched before __remove_section. Why is an
> > additional needed?
> 
> I was getting stalls when removing ~1TB of memory.

Have debugged what is the source of the stall? We do cond_resched once a
memory section which should be a constant unit of work regardless of the
total amount of memory to be removed.
-- 
Michal Hocko
SUSE Labs

Reply via email to