[Devel] [PATCH rh7] tcache: do not try to create node if we are not going to store page

Kirill Tkhai ktkhai at odin.com
Tue Sep 29 05:09:10 PDT 2015



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 <vdavydov at parallels.com>

Reviewed-by: Kirill Tkhai <ktkhai at 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);
> 



More information about the Devel mailing list