[Devel] [PATCH RHEL7 COMMIT] ub: show swapin/out in /proc/bc/<bc>/vmaux

Vladimir Davydov vdavydov at virtuozzo.com
Thu Apr 28 06:55:27 PDT 2016


The commit is pushed to "branch-rh7-3.10.0-327.10.1.vz7.12.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-327.10.1.vz7.12.14
------>
commit 84846741c88e23c3e5bed2d3957044d408de5a3c
Author: Vladimir Davydov <vdavydov at virtuozzo.com>
Date:   Thu Apr 28 17:55:27 2016 +0400

    ub: show swapin/out in /proc/bc/<bc>/vmaux
    
    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 <vdavydov at virtuozzo.com>
---
 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 342f65d966dc..df78ffdea30f 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -5434,6 +5434,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;
 
@@ -5487,6 +5488,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,


More information about the Devel mailing list