|
@@ -5369,45 +5369,33 @@ static int mem_cgroup_move_charge_write(struct cgroup_subsys_state *css,
|
|
|
static int memcg_numa_stat_show(struct cgroup_subsys_state *css,
|
|
|
struct cftype *cft, struct seq_file *m)
|
|
|
{
|
|
|
+ struct numa_stat {
|
|
|
+ const char *name;
|
|
|
+ unsigned int lru_mask;
|
|
|
+ };
|
|
|
+
|
|
|
+ static const struct numa_stat stats[] = {
|
|
|
+ { "total", LRU_ALL },
|
|
|
+ { "file", LRU_ALL_FILE },
|
|
|
+ { "anon", LRU_ALL_ANON },
|
|
|
+ { "unevictable", BIT(LRU_UNEVICTABLE) },
|
|
|
+ };
|
|
|
+ const struct numa_stat *stat;
|
|
|
int nid;
|
|
|
- unsigned long total_nr, file_nr, anon_nr, unevictable_nr;
|
|
|
- unsigned long node_nr;
|
|
|
+ unsigned long nr;
|
|
|
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
|
|
|
|
|
|
- total_nr = mem_cgroup_nr_lru_pages(memcg, LRU_ALL);
|
|
|
- seq_printf(m, "total=%lu", total_nr);
|
|
|
- for_each_node_state(nid, N_MEMORY) {
|
|
|
- node_nr = mem_cgroup_node_nr_lru_pages(memcg, nid, LRU_ALL);
|
|
|
- seq_printf(m, " N%d=%lu", nid, node_nr);
|
|
|
- }
|
|
|
- seq_putc(m, '\n');
|
|
|
-
|
|
|
- file_nr = mem_cgroup_nr_lru_pages(memcg, LRU_ALL_FILE);
|
|
|
- seq_printf(m, "file=%lu", file_nr);
|
|
|
- for_each_node_state(nid, N_MEMORY) {
|
|
|
- node_nr = mem_cgroup_node_nr_lru_pages(memcg, nid,
|
|
|
- LRU_ALL_FILE);
|
|
|
- seq_printf(m, " N%d=%lu", nid, node_nr);
|
|
|
- }
|
|
|
- seq_putc(m, '\n');
|
|
|
-
|
|
|
- anon_nr = mem_cgroup_nr_lru_pages(memcg, LRU_ALL_ANON);
|
|
|
- seq_printf(m, "anon=%lu", anon_nr);
|
|
|
- for_each_node_state(nid, N_MEMORY) {
|
|
|
- node_nr = mem_cgroup_node_nr_lru_pages(memcg, nid,
|
|
|
- LRU_ALL_ANON);
|
|
|
- seq_printf(m, " N%d=%lu", nid, node_nr);
|
|
|
+ for (stat = stats; stat < stats + ARRAY_SIZE(stats); stat++) {
|
|
|
+ nr = mem_cgroup_nr_lru_pages(memcg, stat->lru_mask);
|
|
|
+ seq_printf(m, "%s=%lu", stat->name, nr);
|
|
|
+ for_each_node_state(nid, N_MEMORY) {
|
|
|
+ nr = mem_cgroup_node_nr_lru_pages(memcg, nid,
|
|
|
+ stat->lru_mask);
|
|
|
+ seq_printf(m, " N%d=%lu", nid, nr);
|
|
|
+ }
|
|
|
+ seq_putc(m, '\n');
|
|
|
}
|
|
|
- seq_putc(m, '\n');
|
|
|
|
|
|
- unevictable_nr = mem_cgroup_nr_lru_pages(memcg, BIT(LRU_UNEVICTABLE));
|
|
|
- seq_printf(m, "unevictable=%lu", unevictable_nr);
|
|
|
- for_each_node_state(nid, N_MEMORY) {
|
|
|
- node_nr = mem_cgroup_node_nr_lru_pages(memcg, nid,
|
|
|
- BIT(LRU_UNEVICTABLE));
|
|
|
- seq_printf(m, " N%d=%lu", nid, node_nr);
|
|
|
- }
|
|
|
- seq_putc(m, '\n');
|
|
|
return 0;
|
|
|
}
|
|
|
#endif /* CONFIG_NUMA */
|