Message ID | 20240801232548.36604-2-kaiyang2@cs.cmu.edu (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm: print the promo watermark in zoneinfo | expand |
On Thu, 1 Aug 2024 23:25:47 +0000 kaiyang2@cs.cmu.edu wrote: > Define promo_wmark_pages and convert current call sites of wmark_pages > with fixed WMARK_PROMO to using it instead. Fair enough. I did a thing. From: Andrew Morton <akpm@linux-foundation.org> Subject: include/linux/mmzone.h: clean up watermark accessors Date: Thu Aug 1 04:50:05 PM PDT 2024 - we have a helper wmark_pages(). Teach min_wmark_pages(), low_wmark_pages(), high_wmark_pages() and promo_wmark_pages() to use it instead of open-coding its implementation. - there's no reason to implement all these things as macros. Redo them in C. Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Kaiyang Zhao <kaiyang2@cs.cmu.edu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- include/linux/mmzone.h | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) --- a/include/linux/mmzone.h~include-linux-mmzoneh-clean-up-watermark-accessors +++ a/include/linux/mmzone.h @@ -668,12 +668,6 @@ enum zone_watermarks { #define NR_LOWORDER_PCP_LISTS (MIGRATE_PCPTYPES * (PAGE_ALLOC_COSTLY_ORDER + 1)) #define NR_PCP_LISTS (NR_LOWORDER_PCP_LISTS + NR_PCP_THP) -#define min_wmark_pages(z) (z->_watermark[WMARK_MIN] + z->watermark_boost) -#define low_wmark_pages(z) (z->_watermark[WMARK_LOW] + z->watermark_boost) -#define high_wmark_pages(z) (z->_watermark[WMARK_HIGH] + z->watermark_boost) -#define promo_wmark_pages(z) (z->_watermark[WMARK_PROMO] + z->watermark_boost) -#define wmark_pages(z, i) (z->_watermark[i] + z->watermark_boost) - /* * Flags used in pcp->flags field. * @@ -1019,6 +1013,32 @@ enum zone_flags { ZONE_BELOW_HIGH, /* zone is below high watermark. */ }; +static inline unsigned long wmark_pages(const struct zone *z, + enum zone_watermarks w) +{ + return z->_watermark[w] + z->watermark_boost; +} + +static inline unsigned long min_wmark_pages(const struct zone *z) +{ + return wmark_pages(z, WMARK_MIN); +} + +static inline unsigned long low_wmark_pages(const struct zone *z) +{ + return wmark_pages(z, WMARK_LOW); +} + +static inline unsigned long high_wmark_pages(const struct zone *z) +{ + return wmark_pages(z, WMARK_HIGH); +} + +static inline unsigned long promo_wmark_pages(const struct zone *z) +{ + return wmark_pages(z, WMARK_PROMO); +} + static inline unsigned long zone_managed_pages(struct zone *zone) { return (unsigned long)atomic_long_read(&zone->managed_pages);
On Thu, Aug 01, 2024 at 05:03:02PM -0700, Andrew Morton wrote: > On Thu, 1 Aug 2024 23:25:47 +0000 kaiyang2@cs.cmu.edu wrote: > > > Define promo_wmark_pages and convert current call sites of wmark_pages > > with fixed WMARK_PROMO to using it instead. > > Fair enough. I did a thing. > > From: Andrew Morton <akpm@linux-foundation.org> > Subject: include/linux/mmzone.h: clean up watermark accessors > Date: Thu Aug 1 04:50:05 PM PDT 2024 > > - we have a helper wmark_pages(). Teach min_wmark_pages(), > low_wmark_pages(), high_wmark_pages() and promo_wmark_pages() to use > it instead of open-coding its implementation. > > - there's no reason to implement all these things as macros. Redo them > in C. > > Cc: Johannes Weiner <hannes@cmpxchg.org> > Cc: Kaiyang Zhao <kaiyang2@cs.cmu.edu> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Johannes Weiner <hannes@cmpxchg.org>
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 9f389c76581f..6ea22b3e2f30 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -671,6 +671,7 @@ enum zone_watermarks { #define min_wmark_pages(z) (z->_watermark[WMARK_MIN] + z->watermark_boost) #define low_wmark_pages(z) (z->_watermark[WMARK_LOW] + z->watermark_boost) #define high_wmark_pages(z) (z->_watermark[WMARK_HIGH] + z->watermark_boost) +#define promo_wmark_pages(z) (z->_watermark[WMARK_PROMO] + z->watermark_boost) #define wmark_pages(z, i) (z->_watermark[i] + z->watermark_boost) /* diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 416e29b56cc4..20ea6d085305 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -1742,7 +1742,7 @@ static bool pgdat_free_space_enough(struct pglist_data *pgdat) continue; if (zone_watermark_ok(zone, 0, - wmark_pages(zone, WMARK_PROMO) + enough_wmark, + promo_wmark_pages(zone) + enough_wmark, ZONE_MOVABLE, 0)) return true; } diff --git a/mm/vmscan.c b/mm/vmscan.c index c89d0551655e..31d13462571e 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -6705,7 +6705,7 @@ static bool pgdat_balanced(pg_data_t *pgdat, int order, int highest_zoneidx) continue; if (sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING) - mark = wmark_pages(zone, WMARK_PROMO); + mark = promo_wmark_pages(zone); else mark = high_wmark_pages(zone); if (zone_watermark_ok_safe(zone, order, mark, highest_zoneidx))