[PATCH v3 5/5] vhost_user: Increase number of memory regions

fengchengwen fengchengwen at huawei.com
Thu Nov 13 08:23:22 CET 2025


On 11/13/2025 10:13 AM, Bathija, Pravin wrote:
> Answers inline
> 
> 
> Internal Use - Confidential
>> -----Original Message-----
>> From: fengchengwen <fengchengwen at huawei.com>
>> Sent: Tuesday, November 11, 2025 5:26 PM
>> To: Bathija, Pravin <Pravin.Bathija at dell.com>; dev at dpdk.org
>> Cc: pravin.m.bathija.dev at gmail.com
>> Subject: Re: [PATCH v3 5/5] vhost_user: Increase number of memory regions
>>
>>
>> [EXTERNAL EMAIL]
>>
>> On 11/11/2025 7:34 PM, Bathija, Pravin wrote:
>>> Responses inline.
>>>
>>>
>>> Internal Use - Confidential
>>>> -----Original Message-----
>>>> From: fengchengwen <fengchengwen at huawei.com>
>>>> Sent: Tuesday, November 4, 2025 12:12 AM
>>>> To: Bathija, Pravin <Pravin.Bathija at dell.com>; dev at dpdk.org
>>>> Cc: pravin.m.bathija.dev at gmail.com
>>>> Subject: Re: [PATCH v3 5/5] vhost_user: Increase number of memory
>>>> regions
>>>>
>>>>
>>>> [EXTERNAL EMAIL]
>>>>
>>>> On 11/4/2025 12:21 PM, Pravin M Bathija wrote:
>>>>> In this patch the number of memory regions are increased from
>>>>> 8 to 128. When a vhost-user front-end such as qemu or libblkio
>>>>> queries the back-end such as dpdk with the message, get max number
>>>>> of memory slots, the back-end replies with this number 128 instead
>>>>> of the previously defined 8. The back-end also allocates that many
>>>>> slots in the memory table where regions are added/removed as
>>>>> requested by the vhost-user front-end. This also helps the vhost-
>>>>> user front-end to limit the number of memory regions when sending
>>>>> the set mem table message ar adding memory regions.
>>>>>
>>>>> Signed-off-by: Pravin M Bathija <pravin.bathija at dell.com>
>>>>> ---
>>>>>  lib/vhost/vhost_user.h | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/lib/vhost/vhost_user.h b/lib/vhost/vhost_user.h index
>>>>> 5a0e747b58..c6ad5b76d6 100644
>>>>> --- a/lib/vhost/vhost_user.h
>>>>> +++ b/lib/vhost/vhost_user.h
>>>>> @@ -11,7 +11,7 @@
>>>>>
>>>>>  /* refer to hw/virtio/vhost-user.c */
>>>>>
>>>>> -#define VHOST_MEMORY_MAX_NREGIONS 8
>>>>> +#define VHOST_MEMORY_MAX_NREGIONS 128
>>>>
>>>> The address translation may increase a lot if the real region is 128.
>>>> Maybe we should add another patch to optimize it.
>>>
>>> Could you please share more thoughts on this ?  Are you concerned about
>> the number of addresses and translation table bloat ? What optimization are
>> you suggesting ?
>>
>> Because each memory region is independent and does not overlap, maybe we
>> could use binary search to optimize it.
> 
> From what I gather, both of your latest comments, for patches 4 and 5 are related to performance impact because of 128 memory regions. My thoughts on this are, I will work on an algorithm to optimize as you suggested. Meanwhile we could approve patches 1-4. The rest of the implementation does not need 128 memory regions. The existing 8 regions are fine. I put in this change as I felt it makes the system scale more and was also suggested by Maxime. I think patches 1-4 stand by themselves and have been thoroughly tested. Please let me know your thoughts on this.

I am OK for this.

> 
>>
>>>
>>>>
>>>>>
>>>>>  #define VHOST_USER_NET_SUPPORTED_FEATURES \
>>>>>     (VIRTIO_NET_SUPPORTED_FEATURES | \
>>>
>>>
> 
> 



More information about the dev mailing list