[Devel] [PATCH RHEL7 COMMIT] ub: account shmem in cached in meminfo
Konstantin Khorenko
khorenko at virtuozzo.com
Fri Jun 5 02:45:34 PDT 2015
The commit is pushed to "branch-rh7-3.10.0-123.1.2-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-123.1.2.vz7.5.9
------>
commit 1bd1fb1435323a78d7f5c647c62bdf7de08fa79b
Author: Vladimir Davydov <vdavydov at parallels.com>
Date: Fri Jun 5 13:45:34 2015 +0400
ub: account shmem in cached in meminfo
This patch ports:
diff-ub-account-shmem-to-meminfo-cached
diff-ub-meminfo-cached-make-sure-meminfo-memFree-plus-Cached-plus-Slab-less-than-MemTotal
Author: Vladimir Davydov
Email: vdavydov at parallels.com
Subject: ub: account Shmem to meminfo:Cached
Date: Wed, 3 Dec 2014 16:30:22 +0300
Upstream, Shmem is accounted as file pages so it must contribute to
meminfo:Cached, otherwise output of certain versions of free(1) might
get screwed (negative 'cached').
https://jira.sw.ru/browse/PSBM-28682
Signed-off-by: Vladimir Davydov <vdavydov at parallels.com>
=============================================================================
Author: Vladimir Davydov
Email: vdavydov at parallels.com
Subject: ub/cached: make sure meminfo:MemFree+Cached+Slab<=MemTotal
Date: Tue, 30 Dec 2014 18:23:45 +0300
Since commit diff-ub-account-shmem-to-meminfo-cached, container's
meminfo:Cached includes meminfo:Shmem to conform to the behavior of
vanilla kernels. However, the value of meminfo:Shmem reported inside
containers is not quite the same as it would be in a non-virtualized
environment: it includes swapped out memory, while on vanilla kernels it
only shows the resident shared memory size. As a result,
meminfo:MemFree+Cached can be greater than meminfo:MemTotal, in which
case it's trimmed to MemTotal, so that meminfo:MemFree+Cached+Slab is
likely to be greater than MemTotal. This, in turn, confuses our
userspace tools (PACI autoscaling).
The right fix would be to account only resident shared memory under
meminfo:Shmem, but since it's tricky to implement, because shmem may be
shadowed, let's simply trim meminfo:MemFree+Cached to MemTotal-Slab.
https://jira.sw.ru/browse/PSBM-31006
Signed-off-by: Vladimir Davydov <vdavydov at parallels.com>
=============================================================================
Related to https://jira.sw.ru/browse/PSBM-33637
Signed-off-by: Vladimir Davydov <vdavydov at parallels.com>
---
kernel/bc/vm_pages.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/kernel/bc/vm_pages.c b/kernel/bc/vm_pages.c
index a6f311e..c52d34f 100644
--- a/kernel/bc/vm_pages.c
+++ b/kernel/bc/vm_pages.c
@@ -188,9 +188,6 @@ static int bc_fill_meminfo(struct user_beancounter *ub,
ub_sync_memcg(ub);
ub_page_stat(ub, &node_online_map, mi->pages);
- mi->cached = min(mi->si->totalram - mi->si->freeram,
- mi->pages[LRU_INACTIVE_FILE] +
- mi->pages[LRU_ACTIVE_FILE]);
mi->locked = ub->ub_parms[UB_LOCKEDPAGES].held;
mi->shmem = ub->ub_parms[UB_SHMPAGES].held;
dcache = ub->ub_parms[UB_DCACHESIZE].held;
@@ -211,6 +208,12 @@ static int bc_fill_meminfo(struct user_beancounter *ub,
mi->slab_unreclaimable =
DIV_ROUND_UP(max(0L, (long)ub->ub_parms[UB_KMEMSIZE].held -
dcache), PAGE_SIZE);
+
+ mi->cached = min(mi->si->totalram - mi->si->freeram -
+ mi->slab_reclaimable - mi->slab_unreclaimable,
+ mi->pages[LRU_INACTIVE_FILE] +
+ mi->pages[LRU_ACTIVE_FILE] +
+ ub->ub_parms[UB_SHMPAGES].held);
out:
return ret;
}
More information about the Devel
mailing list