Required for backward compatibility. The values are received from the
associated memory cgroup.

https://jira.sw.ru/browse/PSBM-46104

Signed-off-by: Vladimir Davydov <[email protected]>
---
 include/bc/beancounter.h | 3 +++
 kernel/bc/vm_pages.c     | 3 +++
 mm/memcontrol.c          | 8 ++++++++
 3 files changed, 14 insertions(+)

diff --git a/include/bc/beancounter.h b/include/bc/beancounter.h
index d004afa5be3c..8316cc4861a3 100644
--- a/include/bc/beancounter.h
+++ b/include/bc/beancounter.h
@@ -105,6 +105,9 @@ struct user_beancounter {
        atomic_long_t           wb_requests;
        atomic_long_t           wb_sectors;
 
+       unsigned long           swapin;
+       unsigned long           swapout;
+
        void                    *iolimit;
 
        /* resources statistic and settings */
diff --git a/kernel/bc/vm_pages.c b/kernel/bc/vm_pages.c
index 7529899538a9..b46da98fece2 100644
--- a/kernel/bc/vm_pages.c
+++ b/kernel/bc/vm_pages.c
@@ -253,6 +253,9 @@ static int bc_vmaux_show(struct seq_file *f, void *v)
 
        ub_sync_memcg(ub);
 
+       seq_printf(f, bc_proc_lu_fmt, "swapin", ub->swapin);
+       seq_printf(f, bc_proc_lu_fmt, "swapout", ub->swapout);
+
        seq_printf(f, bc_proc_lu_fmt, "ram", ub->ub_parms[UB_PHYSPAGES].held);
 
        return 0;
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 29716f465ffb..61c395b7c4ed 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -5440,6 +5440,7 @@ static int mem_cgroup_move_charge_write(struct cgroup 
*cgrp,
 void mem_cgroup_sync_beancounter(struct mem_cgroup *memcg,
                                 struct user_beancounter *ub)
 {
+       struct mem_cgroup *mi;
        unsigned long long lim, held, maxheld;
        volatile struct ubparm *k, *d, *p, *s, *o;
 
@@ -5493,6 +5494,13 @@ void mem_cgroup_sync_beancounter(struct mem_cgroup 
*memcg,
        lim = lim >= RESOURCE_MAX ? UB_MAXVALUE :
                min_t(unsigned long long, lim >> PAGE_SHIFT, UB_MAXVALUE);
        o->barrier = o->limit = lim;
+
+       ub->swapin = 0;
+       ub->swapout = 0;
+       for_each_mem_cgroup_tree(mi, memcg) {
+               ub->swapin += mem_cgroup_read_events(mi, 
MEM_CGROUP_EVENTS_PSWPIN);
+               ub->swapout += mem_cgroup_read_events(mi, 
MEM_CGROUP_EVENTS_PSWPOUT);
+       }
 }
 
 int mem_cgroup_apply_beancounter(struct mem_cgroup *memcg,
-- 
2.1.4

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to