Re: [PATCH 11/28] mm: factor shrinker work calculations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dave,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on xfs-linux/for-next]
[also build test WARNING on v5.4-rc5 next-20191031]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Dave-Chinner/xfs-Lower-CIL-flush-limit-for-large-logs/20191102-153137
base:   https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next
config: parisc-c3000_defconfig (attached as .config)
compiler: hppa-linux-gcc (GCC) 7.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.4.0 make.cross ARCH=parisc 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

   In file included from ./arch/parisc/include/generated/asm/div64.h:1:0,
                    from include/linux/kernel.h:18,
                    from arch/parisc/include/asm/bug.h:5,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/mm.h:9,
                    from mm/vmscan.c:17:
   mm/vmscan.c: In function 'shrink_scan_count':
   include/asm-generic/div64.h:226:28: warning: comparison of distinct pointer types lacks a cast
     (void)(((typeof((n)) *)0) == ((uint64_t *)0)); \
                               ^
>> mm/vmscan.c:502:3: note: in expansion of macro 'do_div'
      do_div(delta, shrinker->seeks);
      ^~~~~~

vim +/do_div +502 mm/vmscan.c

   460	
   461	/*
   462	 * Calculate the number of new objects to scan this time around. Return
   463	 * the work to be done. If there are freeable objects, return that number in
   464	 * @freeable_objects.
   465	 */
   466	static int64_t shrink_scan_count(struct shrink_control *shrinkctl,
   467				    struct shrinker *shrinker, int priority,
   468				    int64_t *freeable_objects)
   469	{
   470		int64_t delta;
   471		int64_t freeable;
   472	
   473		freeable = shrinker->count_objects(shrinker, shrinkctl);
   474		if (freeable == 0 || freeable == SHRINK_EMPTY)
   475			return freeable;
   476	
   477		if (shrinker->seeks) {
   478			/*
   479			 * shrinker->seeks is a measure of how much IO is required to
   480			 * reinstantiate the object in memory. The default value is 2
   481			 * which is typical for a cold inode requiring a directory read
   482			 * and an inode read to re-instantiate.
   483			 *
   484			 * The scan batch size is defined by the shrinker priority, but
   485			 * to be able to bias the reclaim we increase the default batch
   486			 * size by 4. Hence we end up with a scan batch multipler that
   487			 * scales like so:
   488			 *
   489			 * ->seeks	scan batch multiplier
   490			 *    1		      4.00x
   491			 *    2               2.00x
   492			 *    3               1.33x
   493			 *    4               1.00x
   494			 *    8               0.50x
   495			 *
   496			 * IOWs, the more seeks it takes to pull the item into cache,
   497			 * the smaller the reclaim scan batch. Hence we put more reclaim
   498			 * pressure on caches that are fast to repopulate and to keep a
   499			 * rough balance between caches that have different costs.
   500			 */
   501			delta = freeable >> (priority - 2);
 > 502			do_div(delta, shrinker->seeks);
   503		} else {
   504			/*
   505			 * These objects don't require any IO to create. Trim them
   506			 * aggressively under memory pressure to keep them from causing
   507			 * refetches in the IO caches.
   508			 */
   509			delta = freeable / 2;
   510		}
   511	
   512		*freeable_objects = freeable;
   513		return delta > 0 ? delta : 0;
   514	}
   515	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux