@@ -1460,6 +1460,29 @@ static inline unsigned long memcg_page_state_output(struct mem_cgroup *memcg,
14601460 return memcg_page_state (memcg , item ) * memcg_page_state_unit (item );
14611461}
14621462
1463+ /* Subset of vm_event_item to report for memcg event stats */
1464+ static const unsigned int memcg_vm_event_stat [] = {
1465+ PGSCAN_KSWAPD ,
1466+ PGSCAN_DIRECT ,
1467+ PGSTEAL_KSWAPD ,
1468+ PGSTEAL_DIRECT ,
1469+ PGFAULT ,
1470+ PGMAJFAULT ,
1471+ PGREFILL ,
1472+ PGACTIVATE ,
1473+ PGDEACTIVATE ,
1474+ PGLAZYFREE ,
1475+ PGLAZYFREED ,
1476+ #if defined(CONFIG_MEMCG_KMEM ) && defined (CONFIG_ZSWAP )
1477+ ZSWPIN ,
1478+ ZSWPOUT ,
1479+ #endif
1480+ #ifdef CONFIG_TRANSPARENT_HUGEPAGE
1481+ THP_FAULT_ALLOC ,
1482+ THP_COLLAPSE_ALLOC ,
1483+ #endif
1484+ };
1485+
14631486static char * memory_stat_format (struct mem_cgroup * memcg )
14641487{
14651488 struct seq_buf s ;
@@ -1495,41 +1518,17 @@ static char *memory_stat_format(struct mem_cgroup *memcg)
14951518 }
14961519
14971520 /* Accumulated memory events */
1498-
1499- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (PGFAULT ),
1500- memcg_events (memcg , PGFAULT ));
1501- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (PGMAJFAULT ),
1502- memcg_events (memcg , PGMAJFAULT ));
1503- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (PGREFILL ),
1504- memcg_events (memcg , PGREFILL ));
15051521 seq_buf_printf (& s , "pgscan %lu\n" ,
15061522 memcg_events (memcg , PGSCAN_KSWAPD ) +
15071523 memcg_events (memcg , PGSCAN_DIRECT ));
15081524 seq_buf_printf (& s , "pgsteal %lu\n" ,
15091525 memcg_events (memcg , PGSTEAL_KSWAPD ) +
15101526 memcg_events (memcg , PGSTEAL_DIRECT ));
1511- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (PGACTIVATE ),
1512- memcg_events (memcg , PGACTIVATE ));
1513- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (PGDEACTIVATE ),
1514- memcg_events (memcg , PGDEACTIVATE ));
1515- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (PGLAZYFREE ),
1516- memcg_events (memcg , PGLAZYFREE ));
1517- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (PGLAZYFREED ),
1518- memcg_events (memcg , PGLAZYFREED ));
1519-
1520- #if defined(CONFIG_MEMCG_KMEM ) && defined(CONFIG_ZSWAP )
1521- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (ZSWPIN ),
1522- memcg_events (memcg , ZSWPIN ));
1523- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (ZSWPOUT ),
1524- memcg_events (memcg , ZSWPOUT ));
1525- #endif
15261527
1527- #ifdef CONFIG_TRANSPARENT_HUGEPAGE
1528- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (THP_FAULT_ALLOC ),
1529- memcg_events (memcg , THP_FAULT_ALLOC ));
1530- seq_buf_printf (& s , "%s %lu\n" , vm_event_name (THP_COLLAPSE_ALLOC ),
1531- memcg_events (memcg , THP_COLLAPSE_ALLOC ));
1532- #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
1528+ for (i = 0 ; i < ARRAY_SIZE (memcg_vm_event_stat ); i ++ )
1529+ seq_buf_printf (& s , "%s %lu\n" ,
1530+ vm_event_name (memcg_vm_event_stat [i ]),
1531+ memcg_events (memcg , memcg_vm_event_stat [i ]));
15331532
15341533 /* The above should easily fit into one page */
15351534 WARN_ON_ONCE (seq_buf_has_overflowed (& s ));
0 commit comments