@@ -1460,6 +1460,29 @@ static inline unsigned long memcg_page_state_output(struct mem_cgroup *memcg,
1460
1460
return memcg_page_state (memcg , item ) * memcg_page_state_unit (item );
1461
1461
}
1462
1462
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
+
1463
1486
static char * memory_stat_format (struct mem_cgroup * memcg )
1464
1487
{
1465
1488
struct seq_buf s ;
@@ -1495,41 +1518,17 @@ static char *memory_stat_format(struct mem_cgroup *memcg)
1495
1518
}
1496
1519
1497
1520
/* 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 ));
1505
1521
seq_buf_printf (& s , "pgscan %lu\n" ,
1506
1522
memcg_events (memcg , PGSCAN_KSWAPD ) +
1507
1523
memcg_events (memcg , PGSCAN_DIRECT ));
1508
1524
seq_buf_printf (& s , "pgsteal %lu\n" ,
1509
1525
memcg_events (memcg , PGSTEAL_KSWAPD ) +
1510
1526
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
1526
1527
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 ]));
1533
1532
1534
1533
/* The above should easily fit into one page */
1535
1534
WARN_ON_ONCE (seq_buf_has_overflowed (& s ));
0 commit comments