Skip to content

Balancing the scan rate of major caches V3

Wu Fengguang lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest16 patches 18 repliesIn review

Changes since V2 from the cover letter

- fix divide error in shrink_slab()
- more debug/accounting code
- fine grained priority/scan quantity
- reluctant to reclaim lowest zone if it is out of sync with highest zone

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/16mm: restore sc.nr_to_reclaimmm/vmscan.c+8 -00 replies
2/16mm: simplify kswapd reclaim codemm/vmscan.c+34 -660 replies
3/16mm: supporting variables and functions for balanced zone aginginclude/linux/mmzone.h mm/page_alloc.c mm/vmscan.c+73 -02 replies
4/16mm: balance zone aging in direct reclaim pathmm/vmscan.c+28 -30 replies
5/16mm: balance zone aging in kswapd reclaim pathmm/vmscan.c+29 -52 replies
6/16mm: balance slab agingfs/drop-pagecache.c include/linux/mm.h mm/vmscan.c+48 -673 replies
7/16mm: balance active/inactive list scan ratesinclude/linux/mmzone.h include/linux/swap.h mm/page_alloc.c +1 more+33 -290 replies
8/16mm: fine grained scan priorityinclude/linux/mmzone.h mm/vmscan.c+18 -90 replies
9/16mm: remove unnecessary variable and loopmm/vmscan.c+43 -492 replies
10/16mm: remove swap_cluster_max from scan_controlmm/vmscan.c+4 -110 replies
11/16mm: let sc.nr_scanned/sc.nr_reclaimed accumulatemm/vmscan.c+14 -220 replies
12/16mm: fold sc.may_writepage and sc.may_swap into sc.flagsmm/vmscan.c+10 -127 replies
13/16mm: fix minor scan count bugsmm/vmscan.c+6 -42 replies
14/16mm: zone aging rounds accountinginclude/linux/mmzone.h mm/page_alloc.c mm/vmscan.c+9 -10 replies
15/16mm: add page reclaim debug tracesmm/vmscan.c+71 -10 replies
16/16mm: kswapd reclaim debug tracemm/vmscan.c+11 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 00/16] Balancing the scan rate of major caches V3

Changes since V2:
- fix divide error in shrink_slab()
- more debug/accounting code
- fine grained priority/scan quantity
- reluctant to reclaim lowest zone if it is out of sync with highest zone

Changes since V1:
- better broken up of patches
- replace pages_more_aged with age_ge/age_gt
- expanded shrink_slab interface
- rewrite kswapd rebalance logic to be simple and robust

This patch balances the aging rates of active_list/inactive_list/slab.

It started out as an effort to enable the adaptive read-ahead to handle large number of concurrent readers. Then I found it envolves much more stuffs, and deserves a standalone patchset to address the balancing problem as a whole.

The whole picture of balancing:

- In each node, inactive_list scan rates are synced with each other It is done in the direct/kswapd reclaim path.

- In each zone, active_list scan rate always follows that of inactive_list

- Slab cache scan rates always follow that of the current node. Since shrink_slab() can be called from different CPUs, that effectly sync slab cache scan rates with that of the most scanned node.

The patches is grouped as follows:

- balancing stuffs
mm-revert-vmscan-balancing-fix.patch
mm-simplify-kswapd-reclaim-code.patch
mm-balance-zone-aging-supporting-facilities.patch
mm-balance-zone-aging-in-direct-reclaim.patch
mm-balance-zone-aging-in-kswapd-reclaim.patch
mm-balance-slab-aging.patch
mm-balance-active-inactive-list-aging.patch
mm-fine-grained-scan-priority.patch

- pure code cleanups mm-remove-unnecessary-variable-and-loop.patch mm-remove-swap-cluster-max-from-scan-control.patch mm-accumulate-nr-scanned-reclaimed-in-scan-control.patch mm-fold-bool-variables-into-flags-in-scan-control.patch

- minor fix
mm-scan-accounting-fix.patch

- debug code
mm-account-zone-aging-rounds.patch
mm-page-reclaim-debug-traces.patch
mm-kswapd-reclaim-debug-trace.patch

Thanks,
Wu Fengguang

--
Dept. Automation University of Science and Technology of China