[Devel] [PATCH rh7 v2] tswap: do not account kmem allocations to memcg

Vladimir Davydov vdavydov at parallels.com
Tue Jul 28 00:45:19 PDT 2015


The reason is the same as in case of tcache: auxiliary kmem allocations,
namely radix-tree nodes, are used for storing tswap pages on the host
and so belong to the host and reclaimed only on global pressure.

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

Signed-off-by: Vladimir Davydov <vdavydov at parallels.com>
---
Changes in v2:
 - Do not account radix_tree_preload either. Actually, in the scope of
   patch 3 of the series this makes no difference. However, when (if) we
   make radix_tree_preload memcg-aware, we won't have to change anything
   in tswap.

 mm/tswap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/tswap.c b/mm/tswap.c
index dc1253f8e5b2..91bee46e7a97 100644
--- a/mm/tswap.c
+++ b/mm/tswap.c
@@ -16,7 +16,7 @@
 
 #define TSWAP_GFP_MASK		(GFP_NOIO | __GFP_NORETRY | __GFP_NOWARN)
 
-static RADIX_TREE(tswap_page_tree, GFP_ATOMIC | __GFP_NOWARN);
+static RADIX_TREE(tswap_page_tree, GFP_ATOMIC | __GFP_NOWARN | __GFP_NOACCOUNT);
 static DEFINE_SPINLOCK(tswap_lock);
 
 struct tswap_lru {
@@ -69,7 +69,7 @@ static int tswap_insert_page(swp_entry_t entry, struct page *page)
 {
 	int err;
 
-	err = radix_tree_preload(TSWAP_GFP_MASK);
+	err = radix_tree_preload(TSWAP_GFP_MASK | __GFP_NOACCOUNT);
 	if (err)
 		return err;
 
-- 
2.1.4




More information about the Devel mailing list