FROMLIST: BACKPORT: mm: add nr_free_highatomic in show_free_areas

commit c928807f6f6b6("mm/page_alloc: keep track of free highatomic")
adds a new variable nr_free_highatomic, which is useful for analyzing low
mem issues. add nr_free_highatomic in show_free_areas.

Signed-off-by: gao xu <gaoxu2@honor.com>
Link: https://lkml.kernel.org/r/d92eeff74f7a4578a14ac777cfe3603a@honor.com
Acked-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Barry Song <baohua@kernel.org>
Acked-by: David Rientjes <rientjes@google.com>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Bug: 415703030
[In 6.6, there is no zone->nr_free_highatomic, replace it with free_highatomics[MAX_NR_ZONES]]
Change-Id: I16ee8d70826904fb32774208c167776c519f6668
Signed-off-by: yipeng xiang <yipengxiang@honor.corp-partner.google.com>
(cherry picked from commit 66900132777164146aa4386b36b73b66784b8ae2)
This commit is contained in:
gao xu
2025-04-12 09:27:24 +00:00
committed by Suren Baghdasaryan
parent 4f512a4a91
commit e4a087feec
2 changed files with 3 additions and 0 deletions

View File

@@ -470,6 +470,7 @@ pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address);
#define K(x) ((x) << (PAGE_SHIFT-10)) #define K(x) ((x) << (PAGE_SHIFT-10))
extern char * const zone_names[MAX_NR_ZONES]; extern char * const zone_names[MAX_NR_ZONES];
extern unsigned long free_highatomics[MAX_NR_ZONES];
/* perform sanity checks on struct pages being allocated or freed */ /* perform sanity checks on struct pages being allocated or freed */
DECLARE_STATIC_KEY_MAYBE(CONFIG_DEBUG_VM, check_pages_enabled); DECLARE_STATIC_KEY_MAYBE(CONFIG_DEBUG_VM, check_pages_enabled);

View File

@@ -320,6 +320,7 @@ static void show_free_areas(unsigned int filter, nodemask_t *nodemask, int max_z
" low:%lukB" " low:%lukB"
" high:%lukB" " high:%lukB"
" reserved_highatomic:%luKB" " reserved_highatomic:%luKB"
" free_highatomic:%luKB"
" active_anon:%lukB" " active_anon:%lukB"
" inactive_anon:%lukB" " inactive_anon:%lukB"
" active_file:%lukB" " active_file:%lukB"
@@ -341,6 +342,7 @@ static void show_free_areas(unsigned int filter, nodemask_t *nodemask, int max_z
K(low_wmark_pages(zone)), K(low_wmark_pages(zone)),
K(high_wmark_pages(zone)), K(high_wmark_pages(zone)),
K(zone->nr_reserved_highatomic), K(zone->nr_reserved_highatomic),
K(free_highatomics[zone_idx(zone)]),
K(zone_page_state(zone, NR_ZONE_ACTIVE_ANON)), K(zone_page_state(zone, NR_ZONE_ACTIVE_ANON)),
K(zone_page_state(zone, NR_ZONE_INACTIVE_ANON)), K(zone_page_state(zone, NR_ZONE_INACTIVE_ANON)),
K(zone_page_state(zone, NR_ZONE_ACTIVE_FILE)), K(zone_page_state(zone, NR_ZONE_ACTIVE_FILE)),