[Devel] [PATCH vz7] net/vhost: Replace kmalloc with kvmalloc for order>=3

Andrei Vagin avagin at virtuozzo.com
Tue Feb 27 01:27:53 MSK 2018


On Mon, Feb 26, 2018 at 03:29:51PM +0300, Oleg Babin wrote:
> Currently we allocate more than eight pages of memory in
> vhost_net_set_ubuf_info() function and we do not need
> them to be physically contiguous, so it is feasible to
> replace a call to kmalloc() with a call to kvmalloc().

I see only 6 pages

UIO_MAXIOV = 1024

struct ubuf_info {
        void (*callback)(struct ubuf_info *, bool zerocopy_success);
        void *ctx;
        unsigned long desc;
};

sizeof(struct ubuf_info) = 24

1024 * 24 / 4096
6

> 
> https://jira.sw.ru/browse/PSBM-81803
> Signed-off-by: Oleg Babin <obabin at virtuozzo.com>
> ---
>  drivers/vhost/net.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
> index 1076a46..d397ceb 100644
> --- a/drivers/vhost/net.c
> +++ b/drivers/vhost/net.c
> @@ -179,8 +179,8 @@ int vhost_net_set_ubuf_info(struct vhost_net *n)
>  		zcopy = vhost_net_zcopy_mask & (0x1 << i);
>  		if (!zcopy)
>  			continue;
> -		n->vqs[i].ubuf_info = kmalloc(sizeof(*n->vqs[i].ubuf_info) *
> -					      UIO_MAXIOV, GFP_KERNEL);
> +		n->vqs[i].ubuf_info = kvmalloc(sizeof(*n->vqs[i].ubuf_info) *
> +					       UIO_MAXIOV, GFP_KERNEL);
>  		if  (!n->vqs[i].ubuf_info)
>  			goto err;
>  	}
> -- 
> 1.8.3.1
> 
> _______________________________________________
> Devel mailing list
> Devel at openvz.org
> https://lists.openvz.org/mailman/listinfo/devel


More information about the Devel mailing list