On 25.09.2015 15:14, Vladimir Davydov wrote: > Currently, we try to create a tcache node even if we are not going to > actually store a page in tcache (tcache is disabled or we are called by > global reclaimer). This is suboptimal, because we will drop the node > anyway then. > > Signed-off-by: Vladimir Davydov <vdavy...@parallels.com>
Reviewed-by: Kirill Tkhai <ktk...@odin.com> > --- > mm/tcache.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/mm/tcache.c b/mm/tcache.c > index b078c84f9564..ce5b0edd8253 100644 > --- a/mm/tcache.c > +++ b/mm/tcache.c > @@ -835,10 +835,15 @@ static void tcache_cleancache_put_page(int pool_id, > { > struct tcache_node *node; > struct page *cache_page = NULL; > + bool may_put = ACCESS_ONCE(tcache_active); > > - node = tcache_get_node_and_pool(pool_id, &key, true); > + /* It makes no sense to populate tcache when we are short on memory */ > + if (current->flags & PF_MEMALLOC) > + may_put = false; > + > + node = tcache_get_node_and_pool(pool_id, &key, may_put); > if (node) { > - if (tcache_active && !(current->flags & PF_MEMALLOC)) > + if (may_put) > cache_page = tcache_alloc_page(); > if (cache_page) { > copy_highpage(cache_page, page); > _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel