linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH 1/3] fs/superblock: Unregister sb shrinker before ->kill_sb()
       [not found] ` <1400749779-24879-2-git-send-email-mgorman@suse.de>
@ 2014-05-22 15:52   ` Rik van Riel
  0 siblings, 0 replies; 13+ messages in thread
From: Rik van Riel @ 2014-05-22 15:52 UTC (permalink / raw)
  To: Mel Gorman, Andrew Morton
  Cc: Johannes Weiner, Hugh Dickins, Tim Chen, Dave Chinner,
	Yuanhan Liu, Bob Liu, Jan Kara, Linux Kernel, Linux-MM,
	Linux-FSDevel

On 05/22/2014 05:09 AM, Mel Gorman wrote:
> From: Dave Chinner <david@fromorbit.com>
> 
> We will like to unregister the sb shrinker before ->kill_sb().
> This will allow cached objects to be counted without call to
> grab_super_passive() to update ref count on sb. We want
> to avoid locking during memory reclamation especially when
> we are skipping the memory reclaim when we are out of
> cached objects.

> Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
> Signed-off-by: Mel Gorman <mgorman@suse.de>

Acked-by: Rik van Riel <riel@redhat.com>

-- 
All rights reversed

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/3] fs/superblock: Avoid locking counting inodes and dentries before reclaiming them
       [not found] ` <1400749779-24879-3-git-send-email-mgorman@suse.de>
@ 2014-05-22 15:59   ` Rik van Riel
  0 siblings, 0 replies; 13+ messages in thread
From: Rik van Riel @ 2014-05-22 15:59 UTC (permalink / raw)
  To: Mel Gorman, Andrew Morton
  Cc: Johannes Weiner, Hugh Dickins, Tim Chen, Dave Chinner,
	Yuanhan Liu, Bob Liu, Jan Kara, Linux Kernel, Linux-MM,
	Linux-FSDevel

On 05/22/2014 05:09 AM, Mel Gorman wrote:
> From: Tim Chen <tim.c.chen@linux.intel.com>
> 
> We remove the call to grab_super_passive in call to super_cache_count.
> This becomes a scalability bottleneck as multiple threads are trying to do
> memory reclamation, e.g. when we are doing large amount of file read and
> page cache is under pressure.  The cached objects quickly got reclaimed
> down to 0 and we are aborting the cache_scan() reclaim.  But counting
> creates a log jam acquiring the sb_lock.

> Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
> Signed-off-by: Mel Gorman <mgorman@suse.de>

Acked-by: Rik van Riel <riel@redhat.com>


-- 
All rights reversed

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/3] mm: vmscan: Use proportional scanning during direct reclaim and full scan at DEF_PRIORITY
       [not found] ` <1400749779-24879-4-git-send-email-mgorman@suse.de>
@ 2014-05-22 16:04   ` Rik van Riel
  0 siblings, 0 replies; 13+ messages in thread
From: Rik van Riel @ 2014-05-22 16:04 UTC (permalink / raw)
  To: Mel Gorman, Andrew Morton
  Cc: Johannes Weiner, Hugh Dickins, Tim Chen, Dave Chinner,
	Yuanhan Liu, Bob Liu, Jan Kara, Linux Kernel, Linux-MM,
	Linux-FSDevel

On 05/22/2014 05:09 AM, Mel Gorman wrote:
> Commit "mm: vmscan: obey proportional scanning requirements for kswapd"
> ensured that file/anon lists were scanned proportionally for reclaim from
> kswapd but ignored it for direct reclaim. The intent was to minimse direct
> reclaim latency but Yuanhan Liu pointer out that it substitutes one long
> stall for many small stalls and distorts aging for normal workloads like
> streaming readers/writers.  Hugh Dickins pointed out that a side-effect of
> the same commit was that when one LRU list dropped to zero that the entirety
> of the other list was shrunk leading to excessive reclaim in memcgs.
> This patch scans the file/anon lists proportionally for direct reclaim
> to similarly age page whether reclaimed by kswapd or direct reclaim but
> takes care to abort reclaim if one LRU drops to zero after reclaiming the
> requested number of pages.
> 

> Note that there are fewer allocation stalls even though the amount
> of direct reclaim scanning is very approximately the same.
> 
> Signed-off-by: Mel Gorman <mgorman@suse.de>

Acked-by: Rik van Riel <riel@redhat.com>


-- 
All rights reversed

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
       [not found] <1400749779-24879-1-git-send-email-mgorman@suse.de>
                   ` (2 preceding siblings ...)
       [not found] ` <1400749779-24879-4-git-send-email-mgorman@suse.de>
@ 2014-05-22 16:14 ` Yuanhan Liu
  2014-05-22 16:30   ` Mel Gorman
  2014-05-22 17:22 ` Tim Chen
  2014-05-26 21:44 ` Hugh Dickins
  5 siblings, 1 reply; 13+ messages in thread
From: Yuanhan Liu @ 2014-05-22 16:14 UTC (permalink / raw)
  To: Mel Gorman
  Cc: Andrew Morton, Johannes Weiner, Hugh Dickins, Tim Chen,
	Dave Chinner, Yuanhan Liu, Bob Liu, Jan Kara, Rik van Riel,
	Mel Gorman, Linux Kernel, Linux-MM, Linux-FSDevel

On Thu, May 22, 2014 at 10:09:36AM +0100, Mel Gorman wrote:
> This series is aimed at regressions noticed during reclaim activity. The
> first two patches are shrinker patches that were posted ages ago but never
> merged for reasons that are unclear to me. I'm posting them again to see if
> there was a reason they were dropped or if they just got lost. Dave?  Time?
> The last patch adjusts proportional reclaim. Yuanhan Liu, can you retest
> the vm scalability test cases on a larger machine? Hugh, does this work
> for you on the memcg test cases?

Sure, and here is the result. I applied these 3 patches on v3.15-rc6,
and head commit is 60c10afd. e82e0561 is the old commit that introduced
the regression.  The testserver has 512G memory and 120 CPU.

It's a simple result; if you need more data, I can gather them and send
it to you tomorrow:

e82e0561        v3.15-rc6       60c10afd
----------------------------------------
18560785        12232122        38868453
                -34%            +109

As you can see, the performance is back, and it is way much better ;)

        --yliu
> 
> Based on ext4, I get the following results but unfortunately my larger test
> machines are all unavailable so this is based on a relatively small machine.
> 
> postmark
>                                   3.15.0-rc5            3.15.0-rc5
>                                      vanilla       proportion-v1r4
> Ops/sec Transactions         21.00 (  0.00%)       25.00 ( 19.05%)
> Ops/sec FilesCreate          39.00 (  0.00%)       45.00 ( 15.38%)
> Ops/sec CreateTransact       10.00 (  0.00%)       12.00 ( 20.00%)
> Ops/sec FilesDeleted       6202.00 (  0.00%)     6202.00 (  0.00%)
> Ops/sec DeleteTransact       11.00 (  0.00%)       12.00 (  9.09%)
> Ops/sec DataRead/MB          25.97 (  0.00%)       30.02 ( 15.59%)
> Ops/sec DataWrite/MB         49.99 (  0.00%)       57.78 ( 15.58%)
> 
> ffsb (mail server simulator)
>                                  3.15.0-rc5             3.15.0-rc5
>                                     vanilla        proportion-v1r4
> Ops/sec readall           9402.63 (  0.00%)      9805.74 (  4.29%)
> Ops/sec create            4695.45 (  0.00%)      4781.39 (  1.83%)
> Ops/sec delete             173.72 (  0.00%)       177.23 (  2.02%)
> Ops/sec Transactions     14271.80 (  0.00%)     14764.37 (  3.45%)
> Ops/sec Read                37.00 (  0.00%)        38.50 (  4.05%)
> Ops/sec Write               18.20 (  0.00%)        18.50 (  1.65%)
> 
> dd of a large file
>                                 3.15.0-rc5            3.15.0-rc5
>                                    vanilla       proportion-v1r4
> WallTime DownloadTar       75.00 (  0.00%)       61.00 ( 18.67%)
> WallTime DD               423.00 (  0.00%)      401.00 (  5.20%)
> WallTime Delete             2.00 (  0.00%)        5.00 (-150.00%)
> 
> stutter (times mmap latency during large amounts of IO)
> 
>                             3.15.0-rc5            3.15.0-rc5
>                                vanilla       proportion-v1r4
> Unit >5ms Delays  80252.0000 (  0.00%)  81523.0000 ( -1.58%)
> Unit Mmap min         8.2118 (  0.00%)      8.3206 ( -1.33%)
> Unit Mmap mean       17.4614 (  0.00%)     17.2868 (  1.00%)
> Unit Mmap stddev     24.9059 (  0.00%)     34.6771 (-39.23%)
> Unit Mmap max      2811.6433 (  0.00%)   2645.1398 (  5.92%)
> Unit Mmap 90%        20.5098 (  0.00%)     18.3105 ( 10.72%)
> Unit Mmap 93%        22.9180 (  0.00%)     20.1751 ( 11.97%)
> Unit Mmap 95%        25.2114 (  0.00%)     22.4988 ( 10.76%)
> Unit Mmap 99%        46.1430 (  0.00%)     43.5952 (  5.52%)
> Unit Ideal  Tput     85.2623 (  0.00%)     78.8906 (  7.47%)
> Unit Tput min        44.0666 (  0.00%)     43.9609 (  0.24%)
> Unit Tput mean       45.5646 (  0.00%)     45.2009 (  0.80%)
> Unit Tput stddev      0.9318 (  0.00%)      1.1084 (-18.95%)
> Unit Tput max        46.7375 (  0.00%)     46.7539 ( -0.04%)
> 
>  fs/super.c  | 16 +++++++++-------
>  mm/vmscan.c | 36 +++++++++++++++++++++++++-----------
>  2 files changed, 34 insertions(+), 18 deletions(-)
> 
> -- 
> 1.8.4.5

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
  2014-05-22 16:14 ` [PATCH 0/3] Shrinkers and proportional reclaim Yuanhan Liu
@ 2014-05-22 16:30   ` Mel Gorman
  2014-05-23  2:43     ` Yuanhan Liu
  0 siblings, 1 reply; 13+ messages in thread
From: Mel Gorman @ 2014-05-22 16:30 UTC (permalink / raw)
  To: Yuanhan Liu
  Cc: Andrew Morton, Johannes Weiner, Hugh Dickins, Tim Chen,
	Dave Chinner, Bob Liu, Jan Kara, Rik van Riel, Linux Kernel,
	Linux-MM, Linux-FSDevel

On Fri, May 23, 2014 at 12:14:16AM +0800, Yuanhan Liu wrote:
> On Thu, May 22, 2014 at 10:09:36AM +0100, Mel Gorman wrote:
> > This series is aimed at regressions noticed during reclaim activity. The
> > first two patches are shrinker patches that were posted ages ago but never
> > merged for reasons that are unclear to me. I'm posting them again to see if
> > there was a reason they were dropped or if they just got lost. Dave?  Time?
> > The last patch adjusts proportional reclaim. Yuanhan Liu, can you retest
> > the vm scalability test cases on a larger machine? Hugh, does this work
> > for you on the memcg test cases?
> 
> Sure, and here is the result. I applied these 3 patches on v3.15-rc6,
> and head commit is 60c10afd. e82e0561 is the old commit that introduced
> the regression.  The testserver has 512G memory and 120 CPU.
> 
> It's a simple result; if you need more data, I can gather them and send
> it to you tomorrow:
> 
> e82e0561        v3.15-rc6       60c10afd
> ----------------------------------------
> 18560785        12232122        38868453
>                 -34%            +109
> 
> As you can see, the performance is back, and it is way much better ;)
> 

Thanks a lot for that and the quick response. It is much appreciated.

-- 
Mel Gorman
SUSE Labs

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
       [not found] <1400749779-24879-1-git-send-email-mgorman@suse.de>
                   ` (3 preceding siblings ...)
  2014-05-22 16:14 ` [PATCH 0/3] Shrinkers and proportional reclaim Yuanhan Liu
@ 2014-05-22 17:22 ` Tim Chen
  2014-05-26 21:44 ` Hugh Dickins
  5 siblings, 0 replies; 13+ messages in thread
From: Tim Chen @ 2014-05-22 17:22 UTC (permalink / raw)
  To: Mel Gorman
  Cc: Andrew Morton, Johannes Weiner, Hugh Dickins, Dave Chinner,
	Yuanhan Liu, Bob Liu, Jan Kara, Rik van Riel, Linux Kernel,
	Linux-MM, Linux-FSDevel

On Thu, 2014-05-22 at 10:09 +0100, Mel Gorman wrote:
> This series is aimed at regressions noticed during reclaim activity. The
> first two patches are shrinker patches that were posted ages ago but never
> merged for reasons that are unclear to me. I'm posting them again to see if
> there was a reason they were dropped or if they just got lost. Dave?  Time?

As far as I remembered, I think Dave was planning to merge this as part
of his VFS scalability patch series.  Otherwise there wasn't any other
issues.

Thanks to Mel for looking at these patches and Yunhan for testing them.

Tim


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
  2014-05-22 16:30   ` Mel Gorman
@ 2014-05-23  2:43     ` Yuanhan Liu
  0 siblings, 0 replies; 13+ messages in thread
From: Yuanhan Liu @ 2014-05-23  2:43 UTC (permalink / raw)
  To: Mel Gorman
  Cc: Andrew Morton, Johannes Weiner, Hugh Dickins, Tim Chen,
	Dave Chinner, Bob Liu, Jan Kara, Rik van Riel, Linux Kernel,
	Linux-MM, Linux-FSDevel

On Thu, May 22, 2014 at 05:30:51PM +0100, Mel Gorman wrote:
> On Fri, May 23, 2014 at 12:14:16AM +0800, Yuanhan Liu wrote:
> > On Thu, May 22, 2014 at 10:09:36AM +0100, Mel Gorman wrote:
> > > This series is aimed at regressions noticed during reclaim activity. The
> > > first two patches are shrinker patches that were posted ages ago but never
> > > merged for reasons that are unclear to me. I'm posting them again to see if
> > > there was a reason they were dropped or if they just got lost. Dave?  Time?
> > > The last patch adjusts proportional reclaim. Yuanhan Liu, can you retest
> > > the vm scalability test cases on a larger machine? Hugh, does this work
> > > for you on the memcg test cases?
> > 
> > Sure, and here is the result. I applied these 3 patches on v3.15-rc6,
> > and head commit is 60c10afd. e82e0561 is the old commit that introduced
> > the regression.  The testserver has 512G memory and 120 CPU.
> > 
> > It's a simple result; if you need more data, I can gather them and send
> > it to you tomorrow:
> > 
> > e82e0561        v3.15-rc6       60c10afd
> > ----------------------------------------
> > 18560785        12232122        38868453
> >                 -34%            +109
> > 
> > As you can see, the performance is back, and it is way much better ;)
> > 
> 
> Thanks a lot for that and the quick response. It is much appreciated.

Welcome! And sorry that I made a silly mistake. Those numbers are right
though, I just setup wrong compare base; I should compare them with
e82e0561's parent, which is 75485363ce85526 at below table.

Here is the detailed results to compensate the mistake I made ;)

    Legend:
            ~XX%    - stddev percent  (3 runs for each kernel)
            [+-]XX% - change percent


75485363ce85526  e82e0561dae9f3ae5a21fc2d3                  v3.15-rc6  60c10afd233f3344479d229dc  
---------------  -------------------------  -------------------------  -------------------------  
  35979244 ~ 0%     -48.4%   18560785 ~ 0%     -66.0%   12235090 ~ 0%      +8.0%   38868453 ~ 0%   vm-scalability.throughput

     28138 ~ 0%   +7448.2%    2123943 ~ 0%   +2724.5%     794777 ~ 0%      +1.6%      28598 ~ 0%   proc-vmstat.allocstall

       544 ~ 6%     -95.2%         26 ~ 0%     -96.5%         19 ~21%      -6.9%        506 ~ 6%   numa-vmstat.node2.nr_isolated_file
  12009832 ~11%    +368.1%   56215319 ~ 0%    +312.9%   49589361 ~ 1%      +0.7%   12091235 ~ 5%   numa-numastat.node3.numa_foreign
       560 ~ 5%     -95.7%         24 ~12%     -96.9%         17 ~10%      -8.7%        511 ~ 2%   numa-vmstat.node1.nr_isolated_file
   8740137 ~12%    +574.0%   58910256 ~ 0%    +321.0%   36798827 ~ 0%     +21.0%   10578905 ~13%   numa-vmstat.node0.numa_other
   8734988 ~12%    +574.4%   58904944 ~ 0%    +321.2%   36794158 ~ 0%     +21.0%   10572718 ~13%   numa-vmstat.node0.numa_miss
      1308 ~12%    -100.0%          0 ~ 0%    -100.0%          0          +23.3%       1612 ~18%   proc-vmstat.pgscan_direct_throttle
  12294788 ~11%    +401.2%   61622745 ~ 0%    +332.6%   53190547 ~ 0%     -13.2%   10667387 ~ 5%   numa-numastat.node1.numa_foreign
       576 ~ 6%     -91.2%         50 ~22%     -94.3%         33 ~20%     -18.1%        472 ~ 1%   numa-vmstat.node0.nr_isolated_file
        12 ~24%   +2400.0%        316 ~ 4%  +13543.7%       1728 ~ 5%    +155.3%         32 ~29%   proc-vmstat.compact_stall
       572 ~ 2%     -96.4%         20 ~18%     -97.6%         13 ~11%     -17.5%        472 ~ 2%   numa-vmstat.node3.nr_isolated_file
      3012 ~12%   +2388.4%      74959 ~ 0%    +254.7%      10685 ~ 1%     -45.4%       1646 ~ 1%   proc-vmstat.pageoutrun
      2312 ~ 3%     -94.2%        133 ~ 4%     -95.8%         97 ~ 8%     -12.6%       2021 ~ 2%   proc-vmstat.nr_isolated_file
   2575163 ~ 0%   +2779.1%   74141888 ~ 0%    +958.0%   27244229 ~ 0%      -1.3%    2542941 ~ 0%   proc-vmstat.pgscan_direct_dma32
  21916603 ~13%   +2519.8%  5.742e+08 ~ 0%   +2868.9%  6.507e+08 ~ 0%     -16.1%   18397644 ~ 5%   proc-vmstat.pgscan_kswapd_normal
     53306 ~24%   +1077.9%     627895 ~ 0%   +2066.2%    1154741 ~ 0%     +23.5%      65815 ~24%   proc-vmstat.pgscan_kswapd_dma32
   2575163 ~ 0%   +2778.6%   74129497 ~ 0%    +957.8%   27239606 ~ 0%      -1.3%    2542353 ~ 0%   proc-vmstat.pgsteal_direct_dma32
  21907744 ~14%   +2520.8%  5.742e+08 ~ 0%   +2870.0%  6.507e+08 ~ 0%     -16.1%   18386641 ~ 5%   proc-vmstat.pgsteal_kswapd_normal
     53306 ~24%   +1077.7%     627796 ~ 0%   +2065.7%    1154436 ~ 0%     +23.3%      65731 ~24%   proc-vmstat.pgsteal_kswapd_dma32
   2967449 ~ 0%   +2432.7%   75156011 ~ 0%    +869.9%   28781337 ~ 0%      -0.7%    2945933 ~ 0%   proc-vmstat.pgalloc_dma32
  13081172 ~11%    +599.4%   91495653 ~ 0%    +337.1%   57180622 ~ 0%     +12.1%   14668141 ~13%   numa-numastat.node0.other_node
  13073426 ~11%    +599.8%   91489575 ~ 0%    +337.4%   57177129 ~ 0%     +12.1%   14660341 ~13%   numa-numastat.node0.numa_miss
       281 ~23%   +1969.4%       5822 ~ 1%   +3321.4%       9625 ~ 2%     -26.9%        205 ~17%   proc-vmstat.kswapd_low_wmark_hit_quickly
   8112109 ~10%    +389.4%   39704684 ~ 0%    +316.9%   33819005 ~ 0%      -7.3%    7523408 ~ 6%   numa-vmstat.node1.numa_foreign
  46881452 ~ 6%    +377.0%  2.236e+08 ~ 0%    +355.8%  2.137e+08 ~ 0%      -4.0%   44983257 ~ 3%   proc-vmstat.numa_miss
  46881949 ~ 6%    +376.9%  2.236e+08 ~ 0%    +355.8%  2.137e+08 ~ 0%      -4.0%   44983257 ~ 3%   proc-vmstat.numa_foreign
  46904868 ~ 6%    +376.8%  2.236e+08 ~ 0%    +355.6%  2.137e+08 ~ 0%      -4.0%   45006469 ~ 3%   proc-vmstat.numa_other
   7800796 ~12%    +363.7%   36173419 ~ 0%    +303.7%   31494068 ~ 1%      +9.4%    8535720 ~ 3%   numa-vmstat.node3.numa_foreign
  11737423 ~ 3%    +393.4%   57911736 ~ 0%    +326.5%   50058077 ~ 1%      +1.7%   11936784 ~ 9%   numa-numastat.node2.numa_foreign
    346095 ~15%    +401.6%    1736002 ~11%    -100.0%          0         -100.0%          0        cpuidle.C1E-IVB.time
   7880367 ~ 7%    +375.2%   37445539 ~ 0%    +304.3%   31862655 ~ 1%      +8.6%    8561430 ~ 8%   numa-vmstat.node2.numa_foreign
   6757778 ~ 7%    +356.3%   30834351 ~ 0%    +466.4%   38274496 ~ 1%      +0.2%    6769705 ~ 2%   numa-vmstat.node0.numa_foreign
  11503752 ~18%    +292.5%   45154508 ~ 0%    +350.3%   51802278 ~ 1%     -16.1%    9652380 ~ 6%   numa-numastat.node2.other_node
  11501132 ~18%    +292.5%   45147677 ~ 0%    +350.4%   51796449 ~ 1%     -16.1%    9647223 ~ 6%   numa-numastat.node2.numa_miss
   7262807 ~16%    +299.9%   29046424 ~ 0%    +348.7%   32588398 ~ 1%     -11.1%    6457478 ~ 6%   numa-vmstat.node2.numa_miss
   7377133 ~16%    +295.3%   29164332 ~ 0%    +343.4%   32710857 ~ 1%     -10.8%    6578224 ~ 5%   numa-vmstat.node2.numa_other
   6820241 ~ 6%    +307.8%   27811586 ~ 0%    +420.7%   35515296 ~ 1%      +7.9%    7355910 ~ 6%   numa-vmstat.node1.numa_miss
  10839905 ~ 7%    +341.4%   47852614 ~ 0%    +461.2%   60832325 ~ 0%      -5.1%   10287850 ~ 4%   numa-numastat.node0.numa_foreign
   6935590 ~ 6%    +302.6%   27924868 ~ 0%    +413.8%   35633492 ~ 1%      +7.8%    7476577 ~ 6%   numa-vmstat.node1.numa_other
  10813993 ~ 5%    +299.5%   43204929 ~ 0%    +420.1%   56246521 ~ 1%      -0.6%   10749818 ~ 4%   numa-numastat.node1.numa_miss
  10819213 ~ 5%    +299.3%   43206092 ~ 0%    +419.9%   56248990 ~ 1%      -0.6%   10757658 ~ 4%   numa-numastat.node1.other_node
   1140660 ~ 4%    +286.4%    4407490 ~ 0%     -70.1%     340604 ~ 7%     -73.9%     297174 ~10%   softirqs.RCU
  11492901 ~ 5%    +280.8%   43760234 ~ 1%    +321.6%   48449737 ~ 0%     -13.6%    9925875 ~11%   numa-numastat.node3.numa_miss
  11500730 ~ 5%    +280.5%   43764966 ~ 1%    +321.3%   48452382 ~ 0%     -13.7%    9928289 ~11%   numa-numastat.node3.other_node
   7731093 ~ 9%    +267.2%   28390454 ~ 1%    +295.2%   30551873 ~ 1%      -9.4%    7001974 ~11%   numa-vmstat.node3.numa_miss
   7848292 ~ 9%    +263.2%   28506779 ~ 1%    +290.8%   30671898 ~ 1%      -9.3%    7121295 ~11%   numa-vmstat.node3.numa_other
  9.19e+08 ~ 0%     -67.9%  2.947e+08 ~ 0%     -88.0%  1.099e+08 ~ 0%      +0.5%   9.24e+08 ~ 0%   proc-vmstat.pgsteal_direct_normal
 9.192e+08 ~ 0%     -67.9%  2.949e+08 ~ 0%     -88.0%  1.101e+08 ~ 0%      +0.5%  9.242e+08 ~ 0%   proc-vmstat.pgscan_direct_normal
       583 ~48%    +119.9%       1283 ~ 4%    -100.0%          0         -100.0%          0        cpuidle.C3-IVB.usage
      1941 ~15%     +94.3%       3772 ~ 2%    -100.0%          0         -100.0%          0        cpuidle.C1E-IVB.usage
    104150 ~ 8%    +122.7%     231910 ~ 1%    -100.0%          0         -100.0%          0        cpuidle.C6-IVB.usage
      4549 ~20%     -44.1%       2544 ~ 3%     -14.1%       3907 ~ 2%     +27.0%       5777 ~27%   numa-meminfo.node2.Mapped
       131 ~ 3%     +57.2%        207 ~26%      +6.2%        139 ~15%      -2.5%        128 ~ 0%   numa-vmstat.node2.nr_mlock
      1154 ~23%     -44.4%        641 ~ 3%     -14.5%        987 ~ 2%     +12.6%       1300 ~13%   numa-vmstat.node2.nr_mapped
       247 ~ 0%     -44.6%        137 ~ 4%     -23.5%        189 ~27%     -13.1%        215 ~14%   numa-vmstat.node3.nr_mlock
   7893867 ~ 0%     +73.1%   13662239 ~ 0%    +131.7%   18293241 ~ 1%      -7.2%    7322135 ~ 2%   softirqs.TIMER
       254 ~ 1%     +52.0%        386 ~ 0%    +112.9%        541 ~ 0%     +33.5%        339 ~ 0%   uptime.boot
    372323 ~ 0%     +52.3%     567042 ~ 0%     +31.1%     488079 ~21%     -15.6%     314286 ~31%   softirqs.SCHED
       936 ~ 8%     +37.4%       1286 ~ 3%    -100.0%          0         -100.0%          0        cpuidle.C1-IVB.usage
  31479723 ~ 4%     -27.5%   22834553 ~ 2%     -34.7%   20560389 ~ 2%      +6.6%   33549465 ~ 3%   numa-meminfo.node2.MemFree
   2323695 ~ 2%     +40.4%    3262008 ~ 1%     -26.5%    1706990 ~ 2%     -48.1%    1205381 ~ 0%   proc-vmstat.pgfault
  32342772 ~ 8%     -26.3%   23833261 ~ 4%     -32.9%   21705887 ~ 0%      +9.4%   35376761 ~ 4%   numa-meminfo.node0.MemFree
   8031011 ~ 8%     -25.6%    5975081 ~ 4%     -32.1%    5453418 ~ 0%      +9.9%    8825066 ~ 4%   numa-vmstat.node0.nr_free_pages
   7827043 ~ 5%     -26.9%    5725077 ~ 2%     -34.0%    5166251 ~ 2%      +7.0%    8371916 ~ 3%   numa-vmstat.node2.nr_free_pages
    397512 ~17%     +51.9%     603759 ~ 0%    +142.6%     964486 ~ 3%     +61.6%     642503 ~ 0%   meminfo.Active(file)
     99417 ~17%     +51.8%     150939 ~ 0%    +142.5%     241038 ~ 3%     +61.7%     160751 ~ 0%   proc-vmstat.nr_active_file
  31323464 ~ 2%     -23.4%   23989124 ~ 4%     -31.8%   21369103 ~ 3%      +9.2%   34212722 ~ 1%   numa-meminfo.node3.MemFree
    438263 ~15%     +47.4%     645991 ~ 0%    +130.4%    1009642 ~ 3%     +55.8%     682854 ~ 0%   meminfo.Active
 1.218e+08 ~ 3%     -27.1%   88812446 ~ 0%     -35.9%   78043140 ~ 1%      +8.8%  1.326e+08 ~ 1%   vmstat.memory.free
   7783606 ~ 2%     -22.7%    6013340 ~ 4%     -31.0%    5368886 ~ 3%      +9.5%    8525297 ~ 1%   numa-vmstat.node3.nr_free_pages
 9.863e+09 ~ 5%     +28.0%  1.263e+10 ~ 0%    -100.0%          0         -100.0%          0        cpuidle.C6-IVB.time
  30685778 ~ 3%     -25.6%   22816822 ~ 0%     -33.9%   20284824 ~ 1%      +9.6%   33629815 ~ 0%   proc-vmstat.nr_free_pages
 1.226e+08 ~ 3%     -25.6%   91184833 ~ 0%     -33.8%   81175485 ~ 0%      +9.1%  1.338e+08 ~ 1%   meminfo.MemFree
     38.36 ~ 1%     -22.9%      29.57 ~ 0%     -32.2%      26.01 ~ 1%     +16.8%      44.81 ~ 0%   turbostat.%c6
    258220 ~ 2%     +27.1%     328306 ~ 0%    +312.9%    1066156 ~ 1%    +327.3%    1103267 ~ 0%   numa-meminfo.node0.SReclaimable
   7391310 ~ 8%     -23.6%    5644229 ~ 3%     -30.8%    5113603 ~ 1%     +10.9%    8193379 ~ 3%   numa-vmstat.node1.nr_free_pages
     64655 ~ 2%     +26.9%      82040 ~ 0%    +312.1%     266434 ~ 1%    +328.1%     276777 ~ 0%   numa-vmstat.node0.nr_slab_reclaimable
  29746194 ~ 9%     -24.3%   22509136 ~ 3%     -31.6%   20349995 ~ 1%     +10.5%   32855085 ~ 3%   numa-meminfo.node1.MemFree
     26.27 ~ 3%     -19.8%      21.08 ~ 2%     -38.5%      16.17 ~ 5%      +7.5%      28.25 ~ 4%   turbostat.%pc2
 1.834e+08 ~ 2%     -19.1%  1.483e+08 ~ 0%     -30.6%  1.273e+08 ~ 0%      +7.1%  1.963e+08 ~ 0%   numa-vmstat.node2.numa_local
 1.835e+08 ~ 2%     -19.1%  1.484e+08 ~ 0%     -30.5%  1.274e+08 ~ 0%      +7.1%  1.965e+08 ~ 0%   numa-vmstat.node2.numa_hit
    253483 ~ 0%     +24.4%     315364 ~ 0%    +356.1%    1156183 ~ 3%    +332.1%    1095207 ~ 1%   numa-meminfo.node2.SReclaimable
     63485 ~ 0%     +24.2%      78832 ~ 0%    +355.1%     288938 ~ 3%    +332.8%     274790 ~ 2%   numa-vmstat.node2.nr_slab_reclaimable
 1.834e+08 ~ 1%     -19.1%  1.484e+08 ~ 0%     -32.2%  1.244e+08 ~ 0%      +6.4%  1.952e+08 ~ 0%   numa-vmstat.node1.numa_local
 1.835e+08 ~ 1%     -19.1%  1.485e+08 ~ 0%     -32.2%  1.245e+08 ~ 0%      +6.4%  1.953e+08 ~ 0%   numa-vmstat.node1.numa_hit
     31121 ~ 0%     +24.2%      38660 ~ 0%    +337.9%     136272 ~ 0%    +346.2%     138852 ~ 0%   slabinfo.radix_tree_node.active_slabs
     31121 ~ 0%     +24.2%      38660 ~ 0%    +337.9%     136272 ~ 0%    +346.2%     138852 ~ 0%   slabinfo.radix_tree_node.num_slabs
   1773967 ~ 0%     +24.2%    2203652 ~ 0%    +330.2%    7631290 ~ 0%    +338.3%    7775736 ~ 0%   slabinfo.radix_tree_node.num_objs
 1.812e+08 ~ 1%     -18.0%  1.486e+08 ~ 0%     -36.8%  1.145e+08 ~ 0%      +6.1%  1.923e+08 ~ 0%   numa-vmstat.node0.numa_local
 1.812e+08 ~ 1%     -18.0%  1.486e+08 ~ 0%     -36.8%  1.145e+08 ~ 0%      +6.1%  1.923e+08 ~ 0%   numa-vmstat.node0.numa_hit
     66070 ~ 3%     +21.3%      80115 ~ 0%    +321.2%     278266 ~ 2%    +326.5%     281780 ~ 0%   numa-vmstat.node3.nr_slab_reclaimable
    300550 ~ 1%     +24.0%     372562 ~ 0%    +270.4%    1113328 ~ 1%    +282.0%    1148228 ~ 0%   numa-meminfo.node0.Slab
    263893 ~ 3%     +21.5%     320550 ~ 0%    +322.0%    1113565 ~ 2%    +325.5%    1122866 ~ 0%   numa-meminfo.node3.SReclaimable
 1.829e+08 ~ 1%     -18.5%  1.491e+08 ~ 0%     -29.1%  1.297e+08 ~ 0%      +7.2%  1.961e+08 ~ 0%   numa-vmstat.node3.numa_local
  1.83e+08 ~ 1%     -18.5%  1.492e+08 ~ 0%     -29.1%  1.298e+08 ~ 0%      +7.2%  1.962e+08 ~ 0%   numa-vmstat.node3.numa_hit
    259346 ~ 0%     +23.4%     320065 ~ 0%    +322.7%    1096319 ~ 0%    +326.9%    1107135 ~ 0%   proc-vmstat.nr_slab_reclaimable
   1037386 ~ 0%     +23.4%    1280292 ~ 0%    +323.0%    4387782 ~ 0%    +328.0%    4439951 ~ 0%   meminfo.SReclaimable
      8287 ~11%     +18.5%       9817 ~11%     +15.1%       9539 ~15%     +12.5%       9319 ~14%   numa-meminfo.node0.AnonPages
 2.577e+08 ~ 0%     -17.7%  2.121e+08 ~ 0%     -29.5%  1.817e+08 ~ 0%      +0.5%  2.589e+08 ~ 0%   numa-numastat.node2.local_node
 2.577e+08 ~ 0%     -17.7%  2.121e+08 ~ 0%     -29.5%  1.817e+08 ~ 0%      +0.5%  2.589e+08 ~ 0%   numa-numastat.node2.numa_hit
    286724 ~ 0%     +22.0%     349778 ~ 0%    +316.0%    1192776 ~ 2%    +293.8%    1129211 ~ 1%   numa-meminfo.node2.Slab


Here I also compared those 3 patches with its base: v3.15-rc6, so that
you can see the changes between them clearly:

      v3.15-rc6  60c10afd233f3344479d229dc  
---------------  -------------------------  
  12235090 ~ 0%    +217.7%   38868453 ~ 0%   vm-scalability.throughput

    794777 ~ 0%     -96.4%      28598 ~ 0%   proc-vmstat.allocstall

     28.86 ~ 0%    -100.0%       0.00 ~ 0%   perf-profile.cpu-cycles._raw_spin_lock.grab_super_passive.super_cache_count.shrink_slab_node.shrink_slab
      0.04 ~30%  +75293.9%      33.17 ~ 2%   perf-profile.cpu-cycles._raw_spin_lock.free_pcppages_bulk.free_hot_cold_page.free_hot_cold_page_list.shrink_page_list
      0.00           +Inf%      19.20 ~ 4%   perf-profile.cpu-cycles._raw_spin_lock.get_page_from_freelist.__alloc_pages_nodemask.alloc_pages_current.__page_cache_alloc

     10685 ~ 1%     -84.6%       1646 ~ 1%   proc-vmstat.pageoutrun
  38274496 ~ 1%     -82.3%    6769705 ~ 2%   numa-vmstat.node0.numa_foreign
  27239606 ~ 0%     -90.7%    2542353 ~ 0%   proc-vmstat.pgsteal_direct_dma32
 1.099e+08 ~ 0%    +740.6%   9.24e+08 ~ 0%   proc-vmstat.pgsteal_direct_normal
 6.507e+08 ~ 0%     -97.2%   18386641 ~ 5%   proc-vmstat.pgsteal_kswapd_normal
        13 ~11%   +3322.7%        472 ~ 2%   numa-vmstat.node3.nr_isolated_file
  28781337 ~ 0%     -89.8%    2945933 ~ 0%   proc-vmstat.pgalloc_dma32
        97 ~ 8%   +1974.9%       2021 ~ 2%   proc-vmstat.nr_isolated_file
      1570 ~ 5%     -98.0%         30 ~25%   proc-vmstat.compact_success
     28.91 ~ 0%    -100.0%       0.00 ~ 0%   perf-profile.cpu-cycles._raw_spin_lock.put_super.super_cache_count.shrink_slab_node.shrink_slab
      1728 ~ 5%     -98.1%         32 ~29%   proc-vmstat.compact_stall
  51802278 ~ 1%     -81.4%    9652380 ~ 6%   numa-numastat.node2.other_node
      9625 ~ 2%     -97.9%        205 ~17%   proc-vmstat.kswapd_low_wmark_hit_quickly
        33 ~20%   +1330.3%        472 ~ 1%   numa-vmstat.node0.nr_isolated_file
 1.101e+08 ~ 0%    +739.2%  9.242e+08 ~ 0%   proc-vmstat.pgscan_direct_normal
      6344 ~12%     -91.9%        513 ~22%   cpuidle.C3-IVT-4S.usage
  51796449 ~ 1%     -81.4%    9647223 ~ 6%   numa-numastat.node2.numa_miss
  27244229 ~ 0%     -90.7%    2542941 ~ 0%   proc-vmstat.pgscan_direct_dma32
   1154436 ~ 0%     -94.3%      65731 ~24%   proc-vmstat.pgsteal_kswapd_dma32
 6.507e+08 ~ 0%     -97.2%   18397644 ~ 5%   proc-vmstat.pgscan_kswapd_normal
   1154741 ~ 0%     -94.3%      65815 ~24%   proc-vmstat.pgscan_kswapd_dma32
  56246521 ~ 1%     -80.9%   10749818 ~ 4%   numa-numastat.node1.numa_miss
        19 ~21%   +2538.9%        506 ~ 6%   numa-vmstat.node2.nr_isolated_file
 1.318e+10 ~31%    -100.0%       1346 ~ 3%   numa-vmstat.node2.nr_alloc_batch
  56248990 ~ 1%     -80.9%   10757658 ~ 4%   numa-numastat.node1.other_node
  60832325 ~ 0%     -83.1%   10287850 ~ 4%   numa-numastat.node0.numa_foreign
        17 ~10%   +2807.2%        511 ~ 2%   numa-vmstat.node1.nr_isolated_file
      1.03 ~ 9%    +342.3%       4.57 ~10%   perf-profile.cpu-cycles._raw_spin_lock_irq.__remove_mapping.shrink_page_list.shrink_inactive_list.shrink_lruvec
 2.137e+08 ~ 0%     -78.9%   44983257 ~ 3%   proc-vmstat.numa_foreign
 2.137e+08 ~ 0%     -78.9%   44983257 ~ 3%   proc-vmstat.numa_miss
 2.137e+08 ~ 0%     -78.9%   45006469 ~ 3%   proc-vmstat.numa_other
  53190547 ~ 0%     -79.9%   10667387 ~ 5%   numa-numastat.node1.numa_foreign
  32588398 ~ 1%     -80.2%    6457478 ~ 6%   numa-vmstat.node2.numa_miss
  32710857 ~ 1%     -79.9%    6578224 ~ 5%   numa-vmstat.node2.numa_other
  35515296 ~ 1%     -79.3%    7355910 ~ 6%   numa-vmstat.node1.numa_miss
  35633492 ~ 1%     -79.0%    7476577 ~ 6%   numa-vmstat.node1.numa_other
  48449737 ~ 0%     -79.5%    9925875 ~11%   numa-numastat.node3.numa_miss
  48452382 ~ 0%     -79.5%    9928289 ~11%   numa-numastat.node3.other_node
  33819005 ~ 0%     -77.8%    7523408 ~ 6%   numa-vmstat.node1.numa_foreign
  50058077 ~ 1%     -76.2%   11936784 ~ 9%   numa-numastat.node2.numa_foreign
  57177129 ~ 0%     -74.4%   14660341 ~13%   numa-numastat.node0.numa_miss
  57180622 ~ 0%     -74.3%   14668141 ~13%   numa-numastat.node0.other_node
  30551873 ~ 1%     -77.1%    7001974 ~11%   numa-vmstat.node3.numa_miss
    171383 ~ 3%    +315.8%     712676 ~ 0%   numa-vmstat.node0.workingset_nodereclaim
  30671898 ~ 1%     -76.8%    7121295 ~11%   numa-vmstat.node3.numa_other
  49589361 ~ 1%     -75.6%   12091235 ~ 5%   numa-numastat.node3.numa_foreign
      3.20 ~ 3%     -73.8%       0.84 ~ 7%   perf-profile.cpu-cycles.get_page_from_freelist.__alloc_pages_nodemask.alloc_pages_current.__page_cache_alloc.__do_page_cache_readahead
  36794158 ~ 0%     -71.3%   10572718 ~13%   numa-vmstat.node0.numa_miss
  36798827 ~ 0%     -71.3%   10578905 ~13%   numa-vmstat.node0.numa_other
  31862655 ~ 1%     -73.1%    8561430 ~ 8%   numa-vmstat.node2.numa_foreign
      5.49 ~ 3%     -72.6%       1.51 ~ 2%   perf-profile.cpu-cycles.read_hpet.ktime_get.sched_clock_tick.scheduler_tick.update_process_times
  31494068 ~ 1%     -72.9%    8535720 ~ 3%   numa-vmstat.node3.numa_foreign
    193959 ~32%    +270.9%     719458 ~ 0%   numa-vmstat.node1.workingset_nodereclaim
      5.54 ~24%     -62.4%       2.08 ~ 2%   perf-profile.cpu-cycles.read_hpet.ktime_get.tick_sched_timer.__run_hrtimer.hrtimer_interrupt
    942413 ~ 1%    +202.8%    2853944 ~ 0%   proc-vmstat.workingset_nodereclaim
      2.56 ~ 1%    +183.7%       7.26 ~ 1%   perf-profile.cpu-cycles.memset.mpage_readpages.xfs_vm_readpages.__do_page_cache_readahead.ondemand_readahead
      0.66 ~ 3%    +158.0%       1.71 ~ 1%   perf-profile.cpu-cycles.do_mpage_readpage.mpage_readpages.xfs_vm_readpages.__do_page_cache_readahead.ondemand_readahead
    278876 ~ 8%    +160.9%     727574 ~ 1%   numa-vmstat.node3.workingset_nodereclaim
      0.99 ~ 2%    +153.7%       2.51 ~ 1%   perf-profile.cpu-cycles.copy_user_enhanced_fast_string.generic_file_aio_read.xfs_file_aio_read.do_sync_read.vfs_read
      1.06 ~ 4%    +152.4%       2.68 ~ 7%   perf-profile.cpu-cycles._raw_spin_lock_irq.shrink_inactive_list.shrink_lruvec.shrink_zone.shrink_zones
  18293241 ~ 1%     -60.0%    7322135 ~ 2%   softirqs.TIMER
   2751027 ~ 1%    +143.4%    6694741 ~ 0%   proc-vmstat.slabs_scanned
    323697 ~13%    +122.6%     720522 ~ 0%   numa-vmstat.node2.workingset_nodereclaim
      2.97 ~20%     -48.9%       1.52 ~ 2%   perf-profile.cpu-cycles.read_hpet.ktime_get_update_offsets.hrtimer_interrupt.local_apic_timer_interrupt.smp_apic_timer_interrupt
    267614 ~ 0%     -54.0%     123176 ~ 1%   cpuidle.C6-IVT-4S.usage
   3854181 ~17%     -53.9%    1775595 ~17%   cpuidle.C1E-IVT-4S.time
       557 ~15%     -55.1%        250 ~ 8%   cpuidle.C1E-IVT-4S.usage
     13518 ~ 7%     -42.6%       7760 ~15%   proc-vmstat.numa_pte_updates
     16.17 ~ 5%     +74.7%      28.25 ~ 4%   turbostat.%pc2
      1076 ~21%     +59.1%       1712 ~17%   numa-vmstat.node3.nr_mapped
     11908 ~13%     -42.3%       6872 ~11%   proc-vmstat.numa_hint_faults
     26.01 ~ 1%     +72.2%      44.81 ~ 0%   turbostat.%c6
  78043140 ~ 1%     +69.8%  1.326e+08 ~ 1%   vmstat.memory.free
      4293 ~22%     +55.3%       6668 ~15%   numa-meminfo.node3.Mapped
 1.145e+08 ~ 0%     +67.9%  1.923e+08 ~ 0%   numa-vmstat.node0.numa_local
 1.145e+08 ~ 0%     +67.9%  1.923e+08 ~ 0%   numa-vmstat.node0.numa_hit
      9263 ~ 6%     -38.4%       5708 ~ 8%   proc-vmstat.numa_hint_faults_local
  20284824 ~ 1%     +65.8%   33629815 ~ 0%   proc-vmstat.nr_free_pages
  81175485 ~ 0%     +64.8%  1.338e+08 ~ 1%   meminfo.MemFree
  20560389 ~ 2%     +63.2%   33549465 ~ 3%   numa-meminfo.node2.MemFree
  20349995 ~ 1%     +61.5%   32855085 ~ 3%   numa-meminfo.node1.MemFree
  21705887 ~ 0%     +63.0%   35376761 ~ 4%   numa-meminfo.node0.MemFree
   5166251 ~ 2%     +62.1%    8371916 ~ 3%   numa-vmstat.node2.nr_free_pages
   5453418 ~ 0%     +61.8%    8825066 ~ 4%   numa-vmstat.node0.nr_free_pages
   5113603 ~ 1%     +60.2%    8193379 ~ 3%   numa-vmstat.node1.nr_free_pages
       541 ~ 0%     -37.3%        339 ~ 0%   uptime.boot
  21369103 ~ 3%     +60.1%   34212722 ~ 1%   numa-meminfo.node3.MemFree
   5368886 ~ 3%     +58.8%    8525297 ~ 1%   numa-vmstat.node3.nr_free_pages
 1.617e+08 ~ 0%     +57.4%  2.545e+08 ~ 0%   numa-numastat.node0.numa_hit
 1.617e+08 ~ 0%     +57.4%  2.545e+08 ~ 0%   numa-numastat.node0.local_node
 1.244e+08 ~ 0%     +57.0%  1.952e+08 ~ 0%   numa-vmstat.node1.numa_local
 1.245e+08 ~ 0%     +56.9%  1.953e+08 ~ 0%   numa-vmstat.node1.numa_hit
 1.273e+08 ~ 0%     +54.2%  1.963e+08 ~ 0%   numa-vmstat.node2.numa_local
 1.274e+08 ~ 0%     +54.1%  1.965e+08 ~ 0%   numa-vmstat.node2.numa_hit
    241038 ~ 3%     -33.3%     160751 ~ 0%   proc-vmstat.nr_active_file
    964486 ~ 3%     -33.4%     642503 ~ 0%   meminfo.Active(file)
      3.16 ~ 5%     -28.2%       2.27 ~18%   perf-profile.cpu-cycles._raw_spin_lock_irqsave.pagevec_lru_move_fn.__lru_cache_add.lru_cache_add.add_to_page_cache_lru
   1009642 ~ 3%     -32.4%     682854 ~ 0%   meminfo.Active
 1.297e+08 ~ 0%     +51.2%  1.961e+08 ~ 0%   numa-vmstat.node3.numa_local
 1.298e+08 ~ 0%     +51.2%  1.962e+08 ~ 0%   numa-vmstat.node3.numa_hit
 7.056e+08 ~ 0%     +46.0%   1.03e+09 ~ 0%   proc-vmstat.numa_hit
 7.056e+08 ~ 0%     +46.0%   1.03e+09 ~ 0%   proc-vmstat.numa_local
 1.768e+08 ~ 0%     +45.7%  2.576e+08 ~ 0%   numa-numastat.node1.local_node
 1.768e+08 ~ 0%     +45.7%  2.576e+08 ~ 0%   numa-numastat.node1.numa_hit
   1706990 ~ 2%     -29.4%    1205381 ~ 0%   proc-vmstat.pgfault
 1.817e+08 ~ 0%     +42.5%  2.589e+08 ~ 0%   numa-numastat.node2.local_node
 1.817e+08 ~ 0%     +42.5%  2.589e+08 ~ 0%   numa-numastat.node2.numa_hit
        91 ~ 0%     -30.0%         64 ~ 0%   vmstat.procs.r
 1.854e+08 ~ 0%     +39.7%   2.59e+08 ~ 0%   numa-numastat.node3.local_node
 1.854e+08 ~ 0%     +39.7%   2.59e+08 ~ 0%   numa-numastat.node3.numa_hit
      2402 ~ 6%     -23.8%       1830 ~ 9%   numa-meminfo.node2.PageTables
    189013 ~ 5%     -26.2%     139474 ~ 1%   proc-vmstat.pgactivate
       599 ~ 5%     -23.3%        460 ~ 9%   numa-vmstat.node2.nr_page_table_pages
       567 ~ 1%     -23.8%        432 ~ 3%   slabinfo.kmalloc-8192.active_objs
       567 ~ 1%     -23.8%        432 ~ 3%   slabinfo.kmalloc-8192.num_objs
      2403 ~ 8%     -24.8%       1807 ~ 1%   numa-meminfo.node0.PageTables
      3439 ~ 7%     -25.1%       2574 ~21%   numa-vmstat.node2.nr_active_anon
     13778 ~ 7%     -25.4%      10275 ~21%   numa-meminfo.node2.Active(anon)
     13823 ~ 7%     -25.6%      10288 ~21%   numa-meminfo.node2.AnonPages
      3449 ~ 7%     -25.3%       2577 ~21%   numa-vmstat.node2.nr_anon_pages
       599 ~ 9%     -23.7%        457 ~ 1%   numa-vmstat.node0.nr_page_table_pages
      5832 ~ 1%     -19.6%       4692 ~ 2%   cpuidle.C1-IVT-4S.usage
      2323 ~ 0%     -17.9%       1907 ~ 1%   proc-vmstat.nr_page_table_pages
      9308 ~ 0%     -17.9%       7642 ~ 1%   meminfo.PageTables
     17256 ~ 4%     +27.1%      21940 ~ 8%   meminfo.Mapped
 8.922e+08 ~ 0%     +20.3%  1.074e+09 ~ 0%   proc-vmstat.pgalloc_normal
      3907 ~ 2%     +47.8%       5777 ~27%   numa-meminfo.node2.Mapped
       987 ~ 2%     +31.7%       1300 ~13%   numa-vmstat.node2.nr_mapped
 9.207e+08 ~ 0%     +16.9%  1.076e+09 ~ 0%   proc-vmstat.pgfree
 1.356e+10 ~ 1%     -14.2%  1.163e+10 ~ 0%   cpuidle.C6-IVT-4S.time
      2246 ~ 3%     -12.6%       1963 ~ 5%   numa-meminfo.node1.PageTables
 1.083e+08 ~ 0%     -12.7%   94534696 ~ 1%   numa-meminfo.node0.FilePages
 1.079e+08 ~ 0%     -12.6%   94270824 ~ 1%   numa-meminfo.node0.Inactive(file)
 1.079e+08 ~ 0%     -12.6%   94270854 ~ 1%   numa-meminfo.node0.Inactive
       559 ~ 3%     -11.6%        494 ~ 4%   numa-vmstat.node1.nr_page_table_pages
      1774 ~ 2%     +12.1%       1989 ~ 4%   slabinfo.sock_inode_cache.num_objs
      1774 ~ 2%     +12.1%       1989 ~ 4%   slabinfo.sock_inode_cache.active_objs
 1.102e+08 ~ 0%     -12.4%   96552102 ~ 1%   numa-meminfo.node0.MemUsed
 4.424e+08 ~ 0%     -12.4%  3.877e+08 ~ 0%   vmstat.memory.cache
  26940036 ~ 0%     -12.5%   23585745 ~ 1%   numa-vmstat.node0.nr_inactive_file
  27043809 ~ 0%     -12.5%   23651628 ~ 1%   numa-vmstat.node0.nr_file_pages
 1.098e+08 ~ 0%     -12.2%   96437485 ~ 0%   proc-vmstat.nr_file_pages
 1.093e+08 ~ 0%     -12.2%   96005869 ~ 0%   proc-vmstat.nr_inactive_file
      4528 ~ 5%     +18.2%       5353 ~10%   proc-vmstat.nr_mapped
 4.392e+08 ~ 0%     -12.0%  3.865e+08 ~ 0%   meminfo.Cached
 1.096e+08 ~ 0%     -11.8%   96632158 ~ 1%   numa-meminfo.node2.FilePages
 4.372e+08 ~ 0%     -12.0%  3.848e+08 ~ 0%   meminfo.Inactive(file)
 1.093e+08 ~ 0%     -11.9%   96232093 ~ 1%   numa-meminfo.node2.Inactive
 1.093e+08 ~ 0%     -11.9%   96232069 ~ 1%   numa-meminfo.node2.Inactive(file)
 4.374e+08 ~ 0%     -12.0%   3.85e+08 ~ 0%   meminfo.Inactive
 1.116e+08 ~ 0%     -11.6%   98566609 ~ 1%   numa-meminfo.node2.MemUsed
  27073175 ~ 0%     -11.8%   23870731 ~ 0%   numa-vmstat.node3.nr_inactive_file
 1.084e+08 ~ 0%     -12.0%   95375555 ~ 0%   numa-meminfo.node3.Inactive(file)
 1.084e+08 ~ 0%     -12.0%   95375696 ~ 0%   numa-meminfo.node3.Inactive
 1.098e+08 ~ 0%     -11.5%   97177949 ~ 1%   numa-meminfo.node1.FilePages
  27368670 ~ 0%     -11.7%   24172297 ~ 1%   numa-vmstat.node2.nr_file_pages
  27292874 ~ 0%     -11.8%   24072388 ~ 1%   numa-vmstat.node2.nr_inactive_file
 1.088e+08 ~ 0%     -11.8%   95932998 ~ 0%   numa-meminfo.node3.FilePages
  27177317 ~ 0%     -11.7%   24010011 ~ 0%   numa-vmstat.node3.nr_file_pages
 1.118e+08 ~ 0%     -11.2%   99260989 ~ 1%   numa-meminfo.node1.MemUsed
 1.107e+08 ~ 0%     -11.6%   97902893 ~ 0%   numa-meminfo.node3.MemUsed
  27415800 ~ 0%     -11.3%   24313716 ~ 1%   numa-vmstat.node1.nr_file_pages
 1.088e+08 ~ 0%     -11.2%   96669488 ~ 1%   numa-meminfo.node1.Inactive(file)
 1.091e+08 ~ 0%     -11.1%   96922630 ~ 1%   numa-meminfo.node1.Inactive
     10839 ~ 0%     -11.0%       9643 ~ 0%   proc-vmstat.nr_anon_pages
  27179244 ~ 0%     -11.0%   24186654 ~ 1%   numa-vmstat.node1.nr_inactive_file
     43359 ~ 0%     -10.9%      38620 ~ 0%   meminfo.AnonPages
     11286 ~ 0%     -10.7%      10078 ~ 0%   proc-vmstat.nr_active_anon
     45155 ~ 0%     -10.6%      40350 ~ 0%   meminfo.Active(anon)
    401298 ~ 7%     +11.8%     448799 ~ 7%   meminfo.Committed_AS
     33611 ~ 0%     -60.9%      13155 ~ 0%   time.system_time
       409 ~ 0%     -49.3%        207 ~ 0%   time.elapsed_time
      2135 ~ 1%     +70.1%       3631 ~ 8%   time.voluntary_context_switches
      2179 ~ 1%     +47.5%       3214 ~ 0%   vmstat.system.cs
     72.36 ~ 0%     -26.3%      53.33 ~ 0%   turbostat.%c0
      8222 ~ 0%     -22.5%       6375 ~ 0%   time.percent_of_cpu_this_job_got
     70.17 ~ 0%     +28.9%      90.42 ~ 0%   time.user_time
    234540 ~ 0%     -19.8%     188128 ~ 0%   time.involuntary_context_switches
       325 ~ 0%     -15.9%        273 ~ 0%   turbostat.Cor_W
       396 ~ 0%     -12.8%        345 ~ 0%   turbostat.Pkg_W
     85.30 ~ 0%     +12.2%      95.67 ~ 0%   turbostat.RAM_W
    118580 ~ 0%      -6.9%     110376 ~ 0%   vmstat.system.in
    121252 ~ 0%      -3.6%     116834 ~ 0%   time.minor_page_faults


	--yliu

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
       [not found] <1400749779-24879-1-git-send-email-mgorman@suse.de>
                   ` (4 preceding siblings ...)
  2014-05-22 17:22 ` Tim Chen
@ 2014-05-26 21:44 ` Hugh Dickins
  2014-05-27  2:37   ` Dave Chinner
  5 siblings, 1 reply; 13+ messages in thread
From: Hugh Dickins @ 2014-05-26 21:44 UTC (permalink / raw)
  To: Mel Gorman
  Cc: Andrew Morton, Johannes Weiner, Tim Chen, Dave Chinner,
	Yuanhan Liu, Bob Liu, Jan Kara, Rik van Riel, Linux Kernel,
	Linux-MM, Linux-FSDevel

On Thu, 22 May 2014, Mel Gorman wrote:

> This series is aimed at regressions noticed during reclaim activity. The
> first two patches are shrinker patches that were posted ages ago but never
> merged for reasons that are unclear to me. I'm posting them again to see if
> there was a reason they were dropped or if they just got lost. Dave?  Time?
> The last patch adjusts proportional reclaim. Yuanhan Liu, can you retest
> the vm scalability test cases on a larger machine? Hugh, does this work
> for you on the memcg test cases?

Yes it does, thank you.

Though the situation is muddy, since on our current internal tree, I'm
surprised to find that the memcg test case no longer fails reliably
without our workaround and without your fix.

"Something must have changed"; but it would take a long time to work
out what.  If I travel back in time with git, to where we first applied
the "vindictive" patch, then yes that test case convincingly fails
without either (my or your) patch, and passes with either patch.

And you have something that satisfies Yuanhan too, that's great.

I'm also pleased to see Dave and Tim reduce the contention in
grab_super_passive(): that's a familiar symbol from livelock dumps.

You might want to add this little 4/3, that we've had in for a
while; but with grab_super_passive() out of super_cache_count(),
it will have much less importance.


[PATCH 4/3] fs/superblock: Avoid counting without __GFP_FS

Don't waste time counting objects in super_cache_count() if no __GFP_FS:
super_cache_scan() would only back out with SHRINK_STOP in that case.

Signed-off-by: Hugh Dickins <hughd@google.com>
---

 fs/super.c |    6 ++++++
 1 file changed, 6 insertions(+)

--- melgo/fs/super.c	2014-05-26 13:39:33.000131904 -0700
+++ linux/fs/super.c	2014-05-26 13:56:19.012155813 -0700
@@ -110,6 +110,12 @@ static unsigned long super_cache_count(s
 	struct super_block *sb;
 	long	total_objects = 0;
 
+	/*
+	 * None can be freed without __GFP_FS, so don't waste time counting.
+	 */
+	if (!(sc->gfp_mask & __GFP_FS))
+		return 0;
+
 	sb = container_of(shrink, struct super_block, s_shrink);
 
 	/*

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
  2014-05-26 21:44 ` Hugh Dickins
@ 2014-05-27  2:37   ` Dave Chinner
  2014-05-27 21:17     ` Hugh Dickins
  0 siblings, 1 reply; 13+ messages in thread
From: Dave Chinner @ 2014-05-27  2:37 UTC (permalink / raw)
  To: Hugh Dickins
  Cc: Mel Gorman, Andrew Morton, Johannes Weiner, Tim Chen,
	Yuanhan Liu, Bob Liu, Jan Kara, Rik van Riel, Linux Kernel,
	Linux-MM, Linux-FSDevel

On Mon, May 26, 2014 at 02:44:29PM -0700, Hugh Dickins wrote:
> On Thu, 22 May 2014, Mel Gorman wrote:
> 
> > This series is aimed at regressions noticed during reclaim activity. The
> > first two patches are shrinker patches that were posted ages ago but never
> > merged for reasons that are unclear to me. I'm posting them again to see if
> > there was a reason they were dropped or if they just got lost. Dave?  Time?
> > The last patch adjusts proportional reclaim. Yuanhan Liu, can you retest
> > the vm scalability test cases on a larger machine? Hugh, does this work
> > for you on the memcg test cases?
> 
> Yes it does, thank you.
> 
> Though the situation is muddy, since on our current internal tree, I'm
> surprised to find that the memcg test case no longer fails reliably
> without our workaround and without your fix.
> 
> "Something must have changed"; but it would take a long time to work
> out what.  If I travel back in time with git, to where we first applied
> the "vindictive" patch, then yes that test case convincingly fails
> without either (my or your) patch, and passes with either patch.
> 
> And you have something that satisfies Yuanhan too, that's great.
> 
> I'm also pleased to see Dave and Tim reduce the contention in
> grab_super_passive(): that's a familiar symbol from livelock dumps.
> 
> You might want to add this little 4/3, that we've had in for a
> while; but with grab_super_passive() out of super_cache_count(),
> it will have much less importance.
> 
> 
> [PATCH 4/3] fs/superblock: Avoid counting without __GFP_FS
> 
> Don't waste time counting objects in super_cache_count() if no __GFP_FS:
> super_cache_scan() would only back out with SHRINK_STOP in that case.
> 
> Signed-off-by: Hugh Dickins <hughd@google.com>

While you might think that's a good thing, it's not.  The act of
shrinking is kept separate from the accounting of how much shrinking
needs to take place.  The amount of work the shrinker can't do due
to the reclaim context is deferred until the shrinker is called in a
context where it can do work (eg. kswapd)

Hence not accounting for work that can't be done immediately will
adversely impact the balance of the system under memory intensive
filesystem workloads. In these worklaods, almost all allocations are
done in the GFP_NOFS or GFP_NOIO contexts so not deferring the work
will will effectively stop superblock cache reclaim entirely....

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
  2014-05-27  2:37   ` Dave Chinner
@ 2014-05-27 21:17     ` Hugh Dickins
  2014-05-27 23:02       ` Konstantin Khlebnikov
  0 siblings, 1 reply; 13+ messages in thread
From: Hugh Dickins @ 2014-05-27 21:17 UTC (permalink / raw)
  To: Dave Chinner
  Cc: Mel Gorman, Andrew Morton, Johannes Weiner, Tim Chen,
	Yuanhan Liu, Bob Liu, Jan Kara, Rik van Riel, Linux Kernel,
	Linux-MM, Linux-FSDevel

On Tue, 27 May 2014, Dave Chinner wrote:
> On Mon, May 26, 2014 at 02:44:29PM -0700, Hugh Dickins wrote:
> > 
> > [PATCH 4/3] fs/superblock: Avoid counting without __GFP_FS
> > 
> > Don't waste time counting objects in super_cache_count() if no __GFP_FS:
> > super_cache_scan() would only back out with SHRINK_STOP in that case.
> > 
> > Signed-off-by: Hugh Dickins <hughd@google.com>
> 
> While you might think that's a good thing, it's not.  The act of
> shrinking is kept separate from the accounting of how much shrinking
> needs to take place.  The amount of work the shrinker can't do due
> to the reclaim context is deferred until the shrinker is called in a
> context where it can do work (eg. kswapd)
> 
> Hence not accounting for work that can't be done immediately will
> adversely impact the balance of the system under memory intensive
> filesystem workloads. In these worklaods, almost all allocations are
> done in the GFP_NOFS or GFP_NOIO contexts so not deferring the work
> will will effectively stop superblock cache reclaim entirely....

Thanks for filling me in on that.  At first I misunderstood you,
and went off looking in the wrong direction.  Now I see what you're
referring to: the quantity that shrink_slab_node() accumulates in
and withdraws from shrinker->nr_deferred[nid].

Right: forget my super_cache_count() __GFP_FS patch!

Hugh

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
  2014-05-27 21:17     ` Hugh Dickins
@ 2014-05-27 23:02       ` Konstantin Khlebnikov
  2014-05-27 23:19         ` Hugh Dickins
  0 siblings, 1 reply; 13+ messages in thread
From: Konstantin Khlebnikov @ 2014-05-27 23:02 UTC (permalink / raw)
  To: Hugh Dickins
  Cc: Dave Chinner, Mel Gorman, Andrew Morton, Johannes Weiner,
	Tim Chen, Yuanhan Liu, Bob Liu, Jan Kara, Rik van Riel,
	Linux Kernel, Linux-MM, Linux-FSDevel

On Wed, May 28, 2014 at 1:17 AM, Hugh Dickins <hughd@google.com> wrote:
> On Tue, 27 May 2014, Dave Chinner wrote:
>> On Mon, May 26, 2014 at 02:44:29PM -0700, Hugh Dickins wrote:
>> >
>> > [PATCH 4/3] fs/superblock: Avoid counting without __GFP_FS
>> >
>> > Don't waste time counting objects in super_cache_count() if no __GFP_FS:
>> > super_cache_scan() would only back out with SHRINK_STOP in that case.
>> >
>> > Signed-off-by: Hugh Dickins <hughd@google.com>
>>
>> While you might think that's a good thing, it's not.  The act of
>> shrinking is kept separate from the accounting of how much shrinking
>> needs to take place.  The amount of work the shrinker can't do due
>> to the reclaim context is deferred until the shrinker is called in a
>> context where it can do work (eg. kswapd)
>>
>> Hence not accounting for work that can't be done immediately will
>> adversely impact the balance of the system under memory intensive
>> filesystem workloads. In these worklaods, almost all allocations are
>> done in the GFP_NOFS or GFP_NOIO contexts so not deferring the work
>> will will effectively stop superblock cache reclaim entirely....
>
> Thanks for filling me in on that.  At first I misunderstood you,
> and went off looking in the wrong direction.  Now I see what you're
> referring to: the quantity that shrink_slab_node() accumulates in
> and withdraws from shrinker->nr_deferred[nid].

Maybe shrinker could accumulate fraction nr_pages_scanned / lru_pages
instead of exact amount of required work? Count of shrinkable objects
might be calculated later, when shrinker is called from a suitable context and
can actualy do something.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
  2014-05-27 23:02       ` Konstantin Khlebnikov
@ 2014-05-27 23:19         ` Hugh Dickins
  2014-05-28  1:37           ` Dave Chinner
  0 siblings, 1 reply; 13+ messages in thread
From: Hugh Dickins @ 2014-05-27 23:19 UTC (permalink / raw)
  To: Konstantin Khlebnikov
  Cc: Dave Chinner, Mel Gorman, Andrew Morton, Johannes Weiner,
	Tim Chen, Yuanhan Liu, Bob Liu, Jan Kara, Rik van Riel,
	Linux Kernel, Linux-MM, Linux-FSDevel

On Wed, 28 May 2014, Konstantin Khlebnikov wrote:
> On Wed, May 28, 2014 at 1:17 AM, Hugh Dickins <hughd@google.com> wrote:
> > On Tue, 27 May 2014, Dave Chinner wrote:
> >> On Mon, May 26, 2014 at 02:44:29PM -0700, Hugh Dickins wrote:
> >> >
> >> > [PATCH 4/3] fs/superblock: Avoid counting without __GFP_FS
> >> >
> >> > Don't waste time counting objects in super_cache_count() if no __GFP_FS:
> >> > super_cache_scan() would only back out with SHRINK_STOP in that case.
> >> >
> >> > Signed-off-by: Hugh Dickins <hughd@google.com>
> >>
> >> While you might think that's a good thing, it's not.  The act of
> >> shrinking is kept separate from the accounting of how much shrinking
> >> needs to take place.  The amount of work the shrinker can't do due
> >> to the reclaim context is deferred until the shrinker is called in a
> >> context where it can do work (eg. kswapd)
> >>
> >> Hence not accounting for work that can't be done immediately will
> >> adversely impact the balance of the system under memory intensive
> >> filesystem workloads. In these worklaods, almost all allocations are
> >> done in the GFP_NOFS or GFP_NOIO contexts so not deferring the work
> >> will will effectively stop superblock cache reclaim entirely....
> >
> > Thanks for filling me in on that.  At first I misunderstood you,
> > and went off looking in the wrong direction.  Now I see what you're
> > referring to: the quantity that shrink_slab_node() accumulates in
> > and withdraws from shrinker->nr_deferred[nid].
> 
> Maybe shrinker could accumulate fraction nr_pages_scanned / lru_pages
> instead of exact amount of required work? Count of shrinkable objects
> might be calculated later, when shrinker is called from a suitable context
> and can actualy do something.

Good idea, probably a worthwhile optimization to think through further.
(Though experience says that Dave will explain how that can never work.)

Hugh

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/3] Shrinkers and proportional reclaim
  2014-05-27 23:19         ` Hugh Dickins
@ 2014-05-28  1:37           ` Dave Chinner
  0 siblings, 0 replies; 13+ messages in thread
From: Dave Chinner @ 2014-05-28  1:37 UTC (permalink / raw)
  To: Hugh Dickins
  Cc: Konstantin Khlebnikov, Mel Gorman, Andrew Morton,
	Johannes Weiner, Tim Chen, Yuanhan Liu, Bob Liu, Jan Kara,
	Rik van Riel, Linux Kernel, Linux-MM, Linux-FSDevel

On Tue, May 27, 2014 at 04:19:12PM -0700, Hugh Dickins wrote:
> On Wed, 28 May 2014, Konstantin Khlebnikov wrote:
> > On Wed, May 28, 2014 at 1:17 AM, Hugh Dickins <hughd@google.com> wrote:
> > > On Tue, 27 May 2014, Dave Chinner wrote:
> > >> On Mon, May 26, 2014 at 02:44:29PM -0700, Hugh Dickins wrote:
> > >> >
> > >> > [PATCH 4/3] fs/superblock: Avoid counting without __GFP_FS
> > >> >
> > >> > Don't waste time counting objects in super_cache_count() if no __GFP_FS:
> > >> > super_cache_scan() would only back out with SHRINK_STOP in that case.
> > >> >
> > >> > Signed-off-by: Hugh Dickins <hughd@google.com>
> > >>
> > >> While you might think that's a good thing, it's not.  The act of
> > >> shrinking is kept separate from the accounting of how much shrinking
> > >> needs to take place.  The amount of work the shrinker can't do due
> > >> to the reclaim context is deferred until the shrinker is called in a
> > >> context where it can do work (eg. kswapd)
> > >>
> > >> Hence not accounting for work that can't be done immediately will
> > >> adversely impact the balance of the system under memory intensive
> > >> filesystem workloads. In these worklaods, almost all allocations are
> > >> done in the GFP_NOFS or GFP_NOIO contexts so not deferring the work
> > >> will will effectively stop superblock cache reclaim entirely....
> > >
> > > Thanks for filling me in on that.  At first I misunderstood you,
> > > and went off looking in the wrong direction.  Now I see what you're
> > > referring to: the quantity that shrink_slab_node() accumulates in
> > > and withdraws from shrinker->nr_deferred[nid].
> > 
> > Maybe shrinker could accumulate fraction nr_pages_scanned / lru_pages
> > instead of exact amount of required work? Count of shrinkable objects
> > might be calculated later, when shrinker is called from a suitable context
> > and can actualy do something.
> 
> Good idea, probably a worthwhile optimization to think through further.
> (Though experience says that Dave will explain how that can never work.)

Heh. :)

Two things, neither are show-stoppers but would need to be handled
in some way.

First: it would remove a lot of the policy flexibility from the
shrinker implementations that we currently have. i.e. the "work to
do" policy is current set by the shrinker, not by the shrinker
infrastructure. The shrinker infrastructure only determines whether
it can be done immediately of whether it shoul dbe deferred....

e.g. there are shrinkers that don't do work unless they are
over certain thresholds. For these shrinkers, they need to have the
work calculated by the callout as they may decide nothing
can/should/needs to be done, and that decision may have nothing to
do with the current reclaim context. You can't really do this
without a callout to determine the cache size.

The other thing I see is that deferring the ratio of work rather
than the actual work is that it doesn't take into account the fact
that the cache sizes might be changing in a different way to memory
pressure. i.e. a sudden increase in cache size just before deferred
reclaim occurred would cause much more reclaim than the current
code, even though the cache wasn't contributing to the original
deferred memory pressure.

This will lead to bursty/peaky reclaim behaviour because we then
can't distinguish an large instantenous change in memory pressure
from "wind up" caused by lots of small increments of deferred work.
We specifically damp the second case:

        /*
         * We need to avoid excessive windup on filesystem shrinkers
         * due to large numbers of GFP_NOFS allocations causing the
         * shrinkers to return -1 all the time. This results in a large
         * nr being built up so when a shrink that can do some work
         * comes along it empties the entire cache due to nr >>>
         * freeable. This is bad for sustaining a working set in
         * memory.
         *
         * Hence only allow the shrinker to scan the entire cache when
         * a large delta change is calculated directly.
         */

Hence we'd need a different mechanism to prevent such defered work
wind up from occurring. We can probably do better than the current
SWAG if we design a new algorithm that has this damping built in.
The current algorithm is all based around the "seek penalty"
reinstantiating a reclaimed object has, and that simply does not
match for many shrinker users now as they aren't spinning disk
based. Hence I think we really need to look at improving the entire
shrinker "work" algorithm rather than just tinkering around the
edges...

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2014-05-28  1:38 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1400749779-24879-1-git-send-email-mgorman@suse.de>
     [not found] ` <1400749779-24879-2-git-send-email-mgorman@suse.de>
2014-05-22 15:52   ` [PATCH 1/3] fs/superblock: Unregister sb shrinker before ->kill_sb() Rik van Riel
     [not found] ` <1400749779-24879-3-git-send-email-mgorman@suse.de>
2014-05-22 15:59   ` [PATCH 2/3] fs/superblock: Avoid locking counting inodes and dentries before reclaiming them Rik van Riel
     [not found] ` <1400749779-24879-4-git-send-email-mgorman@suse.de>
2014-05-22 16:04   ` [PATCH 3/3] mm: vmscan: Use proportional scanning during direct reclaim and full scan at DEF_PRIORITY Rik van Riel
2014-05-22 16:14 ` [PATCH 0/3] Shrinkers and proportional reclaim Yuanhan Liu
2014-05-22 16:30   ` Mel Gorman
2014-05-23  2:43     ` Yuanhan Liu
2014-05-22 17:22 ` Tim Chen
2014-05-26 21:44 ` Hugh Dickins
2014-05-27  2:37   ` Dave Chinner
2014-05-27 21:17     ` Hugh Dickins
2014-05-27 23:02       ` Konstantin Khlebnikov
2014-05-27 23:19         ` Hugh Dickins
2014-05-28  1:37           ` Dave Chinner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).