Skip to content

Balancing the scan rate of major caches V2

Wu Fengguang lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest13 patches 1 replyIn review

Changes since V1 from the cover letter

- 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

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/13mm: restore sc.nr_to_reclaimmm/vmscan.c+8 -00 replies
2/13mm: simplify kswapd reclaim codemm/vmscan.c+34 -660 replies
3/13mm: supporting variables and functions for balanced zone aginginclude/linux/mmzone.h mm/page_alloc.c mm/vmscan.c+68 -00 replies
4/13mm: balance zone aging in direct reclaim pathmm/vmscan.c+28 -30 replies
5/13mm: balance zone aging in kswapd reclaim pathmm/vmscan.c+20 -51 reply
6/13mm: balance slab agingfs/drop-pagecache.c include/linux/mm.h mm/vmscan.c+48 -670 replies
7/13mm: balance active/inactive list scan ratesinclude/linux/mmzone.h include/linux/swap.h mm/page_alloc.c +1 more+33 -290 replies
8/13mm: remove unnecessary variable and loopmm/vmscan.c+43 -490 replies
9/13mm: remove swap_cluster_max from scan_controlmm/vmscan.c+4 -110 replies
10/13mm: let sc.nr_scanned/sc.nr_reclaimed accumulatemm/vmscan.c+14 -220 replies
11/13mm: fold sc.may_writepage and sc.may_swap into sc.flagsmm/vmscan.c+10 -120 replies
12/13mm: add page reclaim debug tracesmm/vmscan.c+67 -10 replies
13/13mm: fix minor scan count bugsmm/vmscan.c+6 -40 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/13] Balancing the scan rate of major caches V2

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 can be 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

- 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-turn-bool-variables-into-flags-in-scan-control.patch

- debug code
mm-page-reclaim-debug-traces.patch

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

Thanks,
Wu Fengguang

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