|
@@ -659,6 +659,138 @@ static void walk_zones_in_node(struct seq_file *m, pg_data_t *pgdat,
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#if defined(CONFIG_PROC_FS) || defined(CONFIG_SYSFS)
|
|
|
|
+#ifdef CONFIG_ZONE_DMA
|
|
|
|
+#define TEXT_FOR_DMA(xx) xx "_dma",
|
|
|
|
+#else
|
|
|
|
+#define TEXT_FOR_DMA(xx)
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_ZONE_DMA32
|
|
|
|
+#define TEXT_FOR_DMA32(xx) xx "_dma32",
|
|
|
|
+#else
|
|
|
|
+#define TEXT_FOR_DMA32(xx)
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_HIGHMEM
|
|
|
|
+#define TEXT_FOR_HIGHMEM(xx) xx "_high",
|
|
|
|
+#else
|
|
|
|
+#define TEXT_FOR_HIGHMEM(xx)
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#define TEXTS_FOR_ZONES(xx) TEXT_FOR_DMA(xx) TEXT_FOR_DMA32(xx) xx "_normal", \
|
|
|
|
+ TEXT_FOR_HIGHMEM(xx) xx "_movable",
|
|
|
|
+
|
|
|
|
+const char * const vmstat_text[] = {
|
|
|
|
+ /* Zoned VM counters */
|
|
|
|
+ "nr_free_pages",
|
|
|
|
+ "nr_inactive_anon",
|
|
|
|
+ "nr_active_anon",
|
|
|
|
+ "nr_inactive_file",
|
|
|
|
+ "nr_active_file",
|
|
|
|
+ "nr_unevictable",
|
|
|
|
+ "nr_mlock",
|
|
|
|
+ "nr_anon_pages",
|
|
|
|
+ "nr_mapped",
|
|
|
|
+ "nr_file_pages",
|
|
|
|
+ "nr_dirty",
|
|
|
|
+ "nr_writeback",
|
|
|
|
+ "nr_slab_reclaimable",
|
|
|
|
+ "nr_slab_unreclaimable",
|
|
|
|
+ "nr_page_table_pages",
|
|
|
|
+ "nr_kernel_stack",
|
|
|
|
+ "nr_unstable",
|
|
|
|
+ "nr_bounce",
|
|
|
|
+ "nr_vmscan_write",
|
|
|
|
+ "nr_writeback_temp",
|
|
|
|
+ "nr_isolated_anon",
|
|
|
|
+ "nr_isolated_file",
|
|
|
|
+ "nr_shmem",
|
|
|
|
+ "nr_dirtied",
|
|
|
|
+ "nr_written",
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_NUMA
|
|
|
|
+ "numa_hit",
|
|
|
|
+ "numa_miss",
|
|
|
|
+ "numa_foreign",
|
|
|
|
+ "numa_interleave",
|
|
|
|
+ "numa_local",
|
|
|
|
+ "numa_other",
|
|
|
|
+#endif
|
|
|
|
+ "nr_anon_transparent_hugepages",
|
|
|
|
+ "nr_dirty_threshold",
|
|
|
|
+ "nr_dirty_background_threshold",
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_VM_EVENT_COUNTERS
|
|
|
|
+ "pgpgin",
|
|
|
|
+ "pgpgout",
|
|
|
|
+ "pswpin",
|
|
|
|
+ "pswpout",
|
|
|
|
+
|
|
|
|
+ TEXTS_FOR_ZONES("pgalloc")
|
|
|
|
+
|
|
|
|
+ "pgfree",
|
|
|
|
+ "pgactivate",
|
|
|
|
+ "pgdeactivate",
|
|
|
|
+
|
|
|
|
+ "pgfault",
|
|
|
|
+ "pgmajfault",
|
|
|
|
+
|
|
|
|
+ TEXTS_FOR_ZONES("pgrefill")
|
|
|
|
+ TEXTS_FOR_ZONES("pgsteal")
|
|
|
|
+ TEXTS_FOR_ZONES("pgscan_kswapd")
|
|
|
|
+ TEXTS_FOR_ZONES("pgscan_direct")
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_NUMA
|
|
|
|
+ "zone_reclaim_failed",
|
|
|
|
+#endif
|
|
|
|
+ "pginodesteal",
|
|
|
|
+ "slabs_scanned",
|
|
|
|
+ "kswapd_steal",
|
|
|
|
+ "kswapd_inodesteal",
|
|
|
|
+ "kswapd_low_wmark_hit_quickly",
|
|
|
|
+ "kswapd_high_wmark_hit_quickly",
|
|
|
|
+ "kswapd_skip_congestion_wait",
|
|
|
|
+ "pageoutrun",
|
|
|
|
+ "allocstall",
|
|
|
|
+
|
|
|
|
+ "pgrotated",
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_COMPACTION
|
|
|
|
+ "compact_blocks_moved",
|
|
|
|
+ "compact_pages_moved",
|
|
|
|
+ "compact_pagemigrate_failed",
|
|
|
|
+ "compact_stall",
|
|
|
|
+ "compact_fail",
|
|
|
|
+ "compact_success",
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_HUGETLB_PAGE
|
|
|
|
+ "htlb_buddy_alloc_success",
|
|
|
|
+ "htlb_buddy_alloc_fail",
|
|
|
|
+#endif
|
|
|
|
+ "unevictable_pgs_culled",
|
|
|
|
+ "unevictable_pgs_scanned",
|
|
|
|
+ "unevictable_pgs_rescued",
|
|
|
|
+ "unevictable_pgs_mlocked",
|
|
|
|
+ "unevictable_pgs_munlocked",
|
|
|
|
+ "unevictable_pgs_cleared",
|
|
|
|
+ "unevictable_pgs_stranded",
|
|
|
|
+ "unevictable_pgs_mlockfreed",
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
|
|
|
+ "thp_fault_alloc",
|
|
|
|
+ "thp_fault_fallback",
|
|
|
|
+ "thp_collapse_alloc",
|
|
|
|
+ "thp_collapse_alloc_failed",
|
|
|
|
+ "thp_split",
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#endif /* CONFIG_VM_EVENTS_COUNTERS */
|
|
|
|
+};
|
|
|
|
+#endif /* CONFIG_PROC_FS || CONFIG_SYSFS */
|
|
|
|
+
|
|
|
|
+
|
|
#ifdef CONFIG_PROC_FS
|
|
#ifdef CONFIG_PROC_FS
|
|
static void frag_show_print(struct seq_file *m, pg_data_t *pgdat,
|
|
static void frag_show_print(struct seq_file *m, pg_data_t *pgdat,
|
|
struct zone *zone)
|
|
struct zone *zone)
|
|
@@ -831,135 +963,6 @@ static const struct file_operations pagetypeinfo_file_ops = {
|
|
.release = seq_release,
|
|
.release = seq_release,
|
|
};
|
|
};
|
|
|
|
|
|
-#ifdef CONFIG_ZONE_DMA
|
|
|
|
-#define TEXT_FOR_DMA(xx) xx "_dma",
|
|
|
|
-#else
|
|
|
|
-#define TEXT_FOR_DMA(xx)
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_ZONE_DMA32
|
|
|
|
-#define TEXT_FOR_DMA32(xx) xx "_dma32",
|
|
|
|
-#else
|
|
|
|
-#define TEXT_FOR_DMA32(xx)
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_HIGHMEM
|
|
|
|
-#define TEXT_FOR_HIGHMEM(xx) xx "_high",
|
|
|
|
-#else
|
|
|
|
-#define TEXT_FOR_HIGHMEM(xx)
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
-#define TEXTS_FOR_ZONES(xx) TEXT_FOR_DMA(xx) TEXT_FOR_DMA32(xx) xx "_normal", \
|
|
|
|
- TEXT_FOR_HIGHMEM(xx) xx "_movable",
|
|
|
|
-
|
|
|
|
-static const char * const vmstat_text[] = {
|
|
|
|
- /* Zoned VM counters */
|
|
|
|
- "nr_free_pages",
|
|
|
|
- "nr_inactive_anon",
|
|
|
|
- "nr_active_anon",
|
|
|
|
- "nr_inactive_file",
|
|
|
|
- "nr_active_file",
|
|
|
|
- "nr_unevictable",
|
|
|
|
- "nr_mlock",
|
|
|
|
- "nr_anon_pages",
|
|
|
|
- "nr_mapped",
|
|
|
|
- "nr_file_pages",
|
|
|
|
- "nr_dirty",
|
|
|
|
- "nr_writeback",
|
|
|
|
- "nr_slab_reclaimable",
|
|
|
|
- "nr_slab_unreclaimable",
|
|
|
|
- "nr_page_table_pages",
|
|
|
|
- "nr_kernel_stack",
|
|
|
|
- "nr_unstable",
|
|
|
|
- "nr_bounce",
|
|
|
|
- "nr_vmscan_write",
|
|
|
|
- "nr_writeback_temp",
|
|
|
|
- "nr_isolated_anon",
|
|
|
|
- "nr_isolated_file",
|
|
|
|
- "nr_shmem",
|
|
|
|
- "nr_dirtied",
|
|
|
|
- "nr_written",
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_NUMA
|
|
|
|
- "numa_hit",
|
|
|
|
- "numa_miss",
|
|
|
|
- "numa_foreign",
|
|
|
|
- "numa_interleave",
|
|
|
|
- "numa_local",
|
|
|
|
- "numa_other",
|
|
|
|
-#endif
|
|
|
|
- "nr_anon_transparent_hugepages",
|
|
|
|
- "nr_dirty_threshold",
|
|
|
|
- "nr_dirty_background_threshold",
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_VM_EVENT_COUNTERS
|
|
|
|
- "pgpgin",
|
|
|
|
- "pgpgout",
|
|
|
|
- "pswpin",
|
|
|
|
- "pswpout",
|
|
|
|
-
|
|
|
|
- TEXTS_FOR_ZONES("pgalloc")
|
|
|
|
-
|
|
|
|
- "pgfree",
|
|
|
|
- "pgactivate",
|
|
|
|
- "pgdeactivate",
|
|
|
|
-
|
|
|
|
- "pgfault",
|
|
|
|
- "pgmajfault",
|
|
|
|
-
|
|
|
|
- TEXTS_FOR_ZONES("pgrefill")
|
|
|
|
- TEXTS_FOR_ZONES("pgsteal")
|
|
|
|
- TEXTS_FOR_ZONES("pgscan_kswapd")
|
|
|
|
- TEXTS_FOR_ZONES("pgscan_direct")
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_NUMA
|
|
|
|
- "zone_reclaim_failed",
|
|
|
|
-#endif
|
|
|
|
- "pginodesteal",
|
|
|
|
- "slabs_scanned",
|
|
|
|
- "kswapd_steal",
|
|
|
|
- "kswapd_inodesteal",
|
|
|
|
- "kswapd_low_wmark_hit_quickly",
|
|
|
|
- "kswapd_high_wmark_hit_quickly",
|
|
|
|
- "kswapd_skip_congestion_wait",
|
|
|
|
- "pageoutrun",
|
|
|
|
- "allocstall",
|
|
|
|
-
|
|
|
|
- "pgrotated",
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_COMPACTION
|
|
|
|
- "compact_blocks_moved",
|
|
|
|
- "compact_pages_moved",
|
|
|
|
- "compact_pagemigrate_failed",
|
|
|
|
- "compact_stall",
|
|
|
|
- "compact_fail",
|
|
|
|
- "compact_success",
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_HUGETLB_PAGE
|
|
|
|
- "htlb_buddy_alloc_success",
|
|
|
|
- "htlb_buddy_alloc_fail",
|
|
|
|
-#endif
|
|
|
|
- "unevictable_pgs_culled",
|
|
|
|
- "unevictable_pgs_scanned",
|
|
|
|
- "unevictable_pgs_rescued",
|
|
|
|
- "unevictable_pgs_mlocked",
|
|
|
|
- "unevictable_pgs_munlocked",
|
|
|
|
- "unevictable_pgs_cleared",
|
|
|
|
- "unevictable_pgs_stranded",
|
|
|
|
- "unevictable_pgs_mlockfreed",
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
|
|
|
- "thp_fault_alloc",
|
|
|
|
- "thp_fault_fallback",
|
|
|
|
- "thp_collapse_alloc",
|
|
|
|
- "thp_collapse_alloc_failed",
|
|
|
|
- "thp_split",
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
-#endif /* CONFIG_VM_EVENTS_COUNTERS */
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
static void zoneinfo_show_print(struct seq_file *m, pg_data_t *pgdat,
|
|
static void zoneinfo_show_print(struct seq_file *m, pg_data_t *pgdat,
|
|
struct zone *zone)
|
|
struct zone *zone)
|
|
{
|
|
{
|