On 12/28/2016 04:30 PM, Michal Hocko wrote:
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1428,6 +1428,7 @@ static unsigned long isolate_lru_pages(unsigned long 
nr_to_scan,
        unsigned long nr_taken = 0;
        unsigned long nr_zone_taken[MAX_NR_ZONES] = { 0 };
        unsigned long nr_skipped[MAX_NR_ZONES] = { 0, };
+       unsigned long skipped = 0, total_skipped = 0;
        unsigned long scan, nr_pages;
        LIST_HEAD(pages_skipped);

@@ -1479,14 +1480,13 @@ static unsigned long isolate_lru_pages(unsigned long 
nr_to_scan,
         */
        if (!list_empty(&pages_skipped)) {
                int zid;
-               unsigned long total_skipped = 0;

                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];
+                       skipped += nr_skipped[zid];
                }

                /*
@@ -1494,13 +1494,13 @@ static unsigned long isolate_lru_pages(unsigned long 
nr_to_scan,
                 * close to unreclaimable. If the LRU list is empty, account
                 * skipped pages as a full scan.
                 */
-               scan += list_empty(src) ? total_skipped : total_skipped >> 2;
+               total_skipped = list_empty(src) ? skipped : skipped >> 2;

Should the tracepoint output reflect this halving heuristic or rather report the raw data? Or is each variant inferrable from the other?


                list_splice(&pages_skipped, src);
        }
-       *nr_scanned = scan;
+       *nr_scanned = scan + total_skipped;
        trace_mm_vmscan_lru_isolate(sc->reclaim_idx, sc->order, nr_to_scan, 
scan,
-                                   nr_taken, mode, is_file_lru(lru));
+                                   skipped, nr_taken, mode, is_file_lru(lru));
        update_lru_sizes(lruvec, lru, nr_zone_taken, nr_taken);
        return nr_taken;
 }


Reply via email to