Message ID | 20150508154726.9969933e6b5ebbb42e65ffae@linux-foundation.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On 08.05.2015 [15:47:26 -0700], Andrew Morton wrote: > On Wed, 06 May 2015 11:28:12 +0200 Vlastimil Babka <vbabka@suse.cz> wrote: > > > On 05/06/2015 12:09 AM, Nishanth Aravamudan wrote: > > > On 03.04.2015 [10:45:56 -0700], Nishanth Aravamudan wrote: > > >>> What I find somewhat worrying though is that we could potentially > > >>> break the pfmemalloc_watermark_ok() test in situations where > > >>> zone_reclaimable_pages(zone) == 0 is a transient situation (and not > > >>> a permanently allocated hugepage). In that case, the throttling is > > >>> supposed to help system recover, and we might be breaking that > > >>> ability with this patch, no? > > >> > > >> Well, if it's transient, we'll skip it this time through, and once there > > >> are reclaimable pages, we should notice it again. > > >> > > >> I'm not familiar enough with this logic, so I'll read through the code > > >> again soon to see if your concern is valid, as best I can. > > > > > > In reviewing the code, I think that transiently unreclaimable zones will > > > lead to some higher direct reclaim rates and possible contention, but > > > shouldn't cause any major harm. The likelihood of that situation, as > > > well, in a non-reserved memory setup like the one I described, seems > > > exceedingly low. > > > > OK, I guess when a reasonably configured system has nothing to reclaim, > > it's already busted and throttling won't change much. > > > > Consider the patch Acked-by: Vlastimil Babka <vbabka@suse.cz> > > OK, thanks, I'll move this patch into the queue for 4.2-rc1. Thank you! > Or is it important enough to merge into 4.1? I think 4.2 is sufficient, but I wonder now if I should have included a stable tag? The issue has been around for a while and there's a relatively easily workaround (use the per-node sysfs files to manually round-robin around the exhausted node) in older kernels, so I had decided against it before. Thanks, Nish
diff -puN mm/vmscan.c~mm-vmscan-do-not-throttle-based-on-pfmemalloc-reserves-if-node-has-no-reclaimable-pages mm/vmscan.c --- a/mm/vmscan.c~mm-vmscan-do-not-throttle-based-on-pfmemalloc-reserves-if-node-has-no-reclaimable-pages +++ a/mm/vmscan.c @@ -2646,7 +2646,8 @@ static bool pfmemalloc_watermark_ok(pg_d for (i = 0; i <= ZONE_NORMAL; i++) { zone = &pgdat->node_zones[i]; - if (!populated_zone(zone)) + if (!populated_zone(zone) || + zone_reclaimable_pages(zone) == 0) continue; pfmemalloc_reserve += min_wmark_pages(zone);