On Fri 17-03-17 14:39:28, Johannes Weiner wrote:
> On Wed, Mar 15, 2017 at 07:36:48PM +0800, Yisheng Xie wrote:
> > @@ -100,6 +100,9 @@ struct scan_control {
> >     /* Can cgroups be reclaimed below their normal consumption range? */
> >     unsigned int may_thrash:1;
> >  
> > +   /* Did we have any memcg protected by the low limit */
> > +   unsigned int memcg_low_protection:1;
> 
> These are both bad names. How about the following pair?
> 
>       /*
>        * Cgroups are not reclaimed below their configured memory.low,
>        * unless we threaten to OOM. If any cgroups are skipped due to
>        * memory.low and nothing was reclaimed, go back for memory.low.
>        */
>       unsigned int memcg_low_skipped:1
>       unsigned int memcg_low_reclaim:1;

yes this is much better

> 
> > @@ -2557,6 +2560,8 @@ static bool shrink_node(pg_data_t *pgdat, struct 
> > scan_control *sc)
> >                     unsigned long scanned;
> >  
> >                     if (mem_cgroup_low(root, memcg)) {
> > +                           sc->memcg_low_protection = 1;
> > +
> >                             if (!sc->may_thrash)
> >                                     continue;
> 
>                               if (!sc->memcg_low_reclaim) {
>                                       sc->memcg_low_skipped = 1;
>                                       continue;
>                               }
> 
> >                             mem_cgroup_events(memcg, MEMCG_LOW, 1);
> > @@ -2808,7 +2813,7 @@ static unsigned long do_try_to_free_pages(struct 
> > zonelist *zonelist,
> >             return 1;
> >  
> >     /* Untapped cgroup reserves?  Don't OOM, retry. */
> > -   if (!sc->may_thrash) {
> > +   if (sc->memcg_low_protection && !sc->may_thrash) {
> 
>       if (sc->memcg_low_skipped) {
>               [...]
>               sc->memcg_low_reclaim = 1;

you need to set memcg_low_skipped = 0 here, right? Otherwise we do not
have break out of the loop. Or am I missing something?

>               goto retry;
>       }

-- 
Michal Hocko
SUSE Labs

Reply via email to