• K
    vmscan: improve reclaim throughput to bail out patch · 01dbe5c9
    KOSAKI Motohiro 提交于
    The vmscan bail out patch move nr_reclaimed variable to struct
    scan_control.  Unfortunately, indirect access can easily happen cache
    miss.
    
    if heavy memory pressure happend, that's ok.
    cache miss already plenty. it is not observable.
    
    but, if memory pressure is lite, performance degression is obserbable.
    
    I compared following three pattern (it was mesured 10 times each)
    
    hackbench 125 process 3000
    hackbench 130 process 3000
    hackbench 135 process 3000
    
                2.6.28-rc6                       bail-out
    
    	125	130	135		125	130	135
          ==============================================================
    	71.866	75.86	81.274		93.414	73.254	193.382
    	74.145	78.295	77.27		74.897	75.021	80.17
    	70.305	77.643	75.855		70.134	77.571	79.896
    	74.288	73.986	75.955		77.222	78.48	80.619
    	72.029	79.947	78.312		75.128	82.172	79.708
    	71.499	77.615	77.042		74.177	76.532	77.306
    	76.188	74.471	83.562		73.839	72.43	79.833
    	73.236	75.606	78.743		76.001	76.557	82.726
    	69.427	77.271	76.691		76.236	79.371	103.189
    	72.473	76.978	80.643		69.128	78.932	75.736
    
    avg	72.545	76.767	78.534		76.017	77.03	93.256
    std	1.89	1.71	2.41		6.29	2.79	34.16
    min	69.427	73.986	75.855		69.128	72.43	75.736
    max	76.188	79.947	83.562		93.414	82.172	193.382
    
    about 4-5% degression.
    
    Then, this patch introduces a temporary local variable.
    
    result:
    
                2.6.28-rc6                       this patch
    
    num	125	130	135		125	130	135
          ==============================================================
    	71.866	75.86	81.274		67.302	68.269	77.161
    	74.145	78.295	77.27   	72.616	72.712	79.06
    	70.305	77.643	75.855  	72.475	75.712	77.735
    	74.288	73.986	75.955  	69.229	73.062	78.814
    	72.029	79.947	78.312  	71.551	74.392	78.564
    	71.499	77.615	77.042  	69.227	74.31	78.837
    	76.188	74.471	83.562  	70.759	75.256	76.6
    	73.236	75.606	78.743  	69.966	76.001	78.464
    	69.427	77.271	76.691  	69.068	75.218	80.321
    	72.473	76.978	80.643  	72.057	77.151	79.068
    
    avg	72.545	76.767	78.534 		70.425	74.2083	78.462
    std 	1.89	1.71	2.41    	1.66	2.34	1.00
    min 	69.427	73.986	75.855  	67.302	68.269	76.6
    max 	76.188	79.947	83.562  	72.616	77.151	80.321
    
    OK. the degression is disappeared.
    Signed-off-by: NKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Acked-by: NRik van Riel <riel@redhat.com>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    01dbe5c9
vmscan.c 70.7 KB