Messages in this thread | | | Date | Mon, 25 Jul 2016 10:52:51 +0100 | From | Mel Gorman <> | Subject | Re: [PATCH 5/5] mm, vmscan: Account for skipped pages as a partial scan |
| |
On Mon, Jul 25, 2016 at 05:39:13PM +0900, Minchan Kim wrote: > > @@ -1465,14 +1471,24 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, > > */ > > if (!list_empty(&pages_skipped)) { > > int zid; > > + unsigned long total_skipped = 0; > > > > - list_splice(&pages_skipped, src); > > for (zid = 0; zid < MAX_NR_ZONES; zid++) { > > if (!nr_skipped[zid]) > > continue; > > > > __count_zid_vm_events(PGSCAN_SKIP, zid, nr_skipped[zid]); > > + total_skipped += nr_skipped[zid]; > > } > > + > > + /* > > + * Account skipped pages as a partial scan as the pgdat may be > > + * close to unreclaimable. If the LRU list is empty, account > > + * skipped pages as a full scan. > > + */ > > node-lru made OOM detection lengthy because a freeing of any zone will > reset NR_PAGES_SCANNED easily so that it's hard to meet a situation > pgdat_reclaimable returns *false*. >
Your patch should go a long way to addressing that as it checks the zone counters first before conducting the scan. Remember as well that the longer detection of OOM only applies to zone-constrained allocations and there is always the possibility that highmem shrinking of pages frees lowmem memory if buffers are used.
-- Mel Gorman SUSE Labs
| |