[PATCH 4/5] mm/vmstat.c: move the per-node stats to the front of /proc/zoneinfo

From: Baoquan He
Date: Tue Mar 24 2020 - 10:23:00 EST


This moving makes the layout of /proc/zoneinfo more sensible. And there
are 4 zones at most currently, it doesn't need to scroll down much to get
to the 1st populated zone, even though the 1st populated zone is MOVABLE
zone.

Node 2, per-node stats
nr_inactive_anon 48
nr_active_anon 15454
...
nr_foll_pin_acquired 0
nr_foll_pin_released 0
Node 2, zone DMA
pages free 0
min 0
low 0
high 0
spanned 0
present 0
managed 0
Node 2, zone DMA32
pages free 0
min 0
low 0
high 0
spanned 0
present 0
managed 0
Node 2, zone Normal
pages free 0
min 0
low 0
high 0
spanned 0
present 0
managed 0
Node 2, zone Movable
pages free 196346
min 3540
...
managed 262144

Signed-off-by: Baoquan He <bhe@xxxxxxxxxx>
---
mm/vmstat.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/mm/vmstat.c b/mm/vmstat.c
index 6fd1407f4632..4bbf9be786da 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1567,13 +1567,6 @@ static void zoneinfo_show_print(struct seq_file *m, pg_data_t *pgdat,
{
int i;
seq_printf(m, "Node %d, zone %8s", pgdat->node_id, zone->name);
- if (is_zone_first_populated(pgdat, zone)) {
- seq_printf(m, "\n per-node stats");
- for (i = 0; i < NR_VM_NODE_STAT_ITEMS; i++) {
- seq_printf(m, "\n %-12s %lu", node_stat_name(i),
- node_page_state(pgdat, i));
- }
- }
seq_printf(m,
"\n pages free %lu"
"\n min %lu"
@@ -1648,7 +1641,18 @@ static void zoneinfo_show_print(struct seq_file *m, pg_data_t *pgdat,
*/
static int zoneinfo_show(struct seq_file *m, void *arg)
{
+ int i;
pg_data_t *pgdat = (pg_data_t *)arg;
+
+ if (node_state(pgdat->node_id, N_MEMORY)) {
+ seq_printf(m, "Node %d, per-node stats", pgdat->node_id);
+ for (i = 0; i < NR_VM_NODE_STAT_ITEMS; i++) {
+ seq_printf(m, "\n %-12s %lu", node_stat_name(i),
+ node_page_state(pgdat, i));
+ }
+ seq_putc(m, '\n');
+ }
+
walk_zones_in_node(m, pgdat, false, false, zoneinfo_show_print);
return 0;
}
--
2.17.2