diff mbox series

[ovs-dev,1/3] netdev-dpdk: Fix and document vhost tx retries.

Message ID 20190621134158.7000-1-ktraynor@redhat.com
State Superseded
Headers show
Series [ovs-dev,1/3] netdev-dpdk: Fix and document vhost tx retries. | expand

Commit Message

Kevin Traynor June 21, 2019, 1:41 p.m. UTC
Fix minor issue of one additional retry and add
documentation about vhost tx retries and ways to
reduce/remove them.

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>

---
There is a checkpatch warning that one of the libvirt
lines in docs is a few characters too long. It is similar
for some others in the file and I think it makes sense to
leave it as is but can wrap if required.
---
 Documentation/topics/dpdk/vhost-user.rst | 31 ++++++++++++++++++++++++
 lib/netdev-dpdk.c                        |  2 +-
 2 files changed, 32 insertions(+), 1 deletion(-)

Comments

0-day Robot June 21, 2019, 2:07 p.m. UTC | #1
Bleep bloop.  Greetings Kevin Traynor, I am a robot and I have tried out your patch.
Thanks for your contribution.

I encountered some error that I wasn't expecting.  See the details below.


checkpatch:
WARNING: Line is 81 characters long (recommended limit is 79)
#44 FILE: Documentation/topics/dpdk/vhost-user.rst:98:
      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>

Lines checked: 73, Warnings: 1, Errors: 0


Please check this out.  If you feel there has been an error, please email aconole@bytheb.org

Thanks,
0-day Robot
Li,Rongqing via dev June 24, 2019, 9:40 p.m. UTC | #2
On Fri, Jun 21, 2019 at 02:41:56PM +0100, Kevin Traynor wrote:
> Fix minor issue of one additional retry and add
> documentation about vhost tx retries and ways to
> reduce/remove them.
> 
> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
> 
> ---
> There is a checkpatch warning that one of the libvirt
> lines in docs is a few characters too long. It is similar
> for some others in the file and I think it makes sense to
> leave it as is but can wrap if required.
> ---
>  Documentation/topics/dpdk/vhost-user.rst | 31 ++++++++++++++++++++++++
>  lib/netdev-dpdk.c                        |  2 +-
>  2 files changed, 32 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
> index f7b4b338e..d1682fd05 100644
> --- a/Documentation/topics/dpdk/vhost-user.rst
> +++ b/Documentation/topics/dpdk/vhost-user.rst
> @@ -76,4 +76,35 @@ mode ports require QEMU version 2.7.  Ports of type vhost-user are currently
>  deprecated and will be removed in a future release.
>  
> +vhost tx retries
> +~~~~~~~~~~~~~~~~
> +
> +When sending a batch of packets (max is 32) to a vhost-user or

Maybe use the actual define name (NETDEV_MAX_BURST) since it might change?

> +vhost-user-client interface, it may happen that some but not all of the packets
> +in the batch are able to be sent to the guest. This is often because there is
> +not enough free descriptors in the virtqueue for all the packets to be sent.
> +In this case there will be a retry, with a default maximum of 8 occurring. If
> +at any time no packets can be sent, it may mean the guest is not accepting
> +packets, so there are no (more) retries.
> +
> +Tx Retries may be reduced or removed by some external configuration, such

s/removed/even avoided/ ?

> +as increasing the virtqueue size through the ``rx_queue_size`` parameter in
> +libvirt::
> +
> +  <interface type='vhostuser'>
> +      <mac address='56:48:4f:53:54:01'/>
> +      <source type='unix' path='/tmp/dpdkvhostclient0' mode='server'/>
> +      <model type='virtio'/>
> +      <driver name='vhost' rx_queue_size='1024' tx_queue_size='1024'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
> +  </interface>

Do we need to worry about the qemu version?

> +
> +The guest application will also need need to provide enough descriptors. For
> +example with ``testpmd`` the command line argument can be used::
> +
> + --rxd=1024 --txd=1024
> +
> +The guest should also have sufficient cores dedicated for consuming and
> +processing packets at the required rate.
> +
>  .. _dpdk-vhost-user:
>  
> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
> index 4856c56aa..0f3b9c6f4 100644
> --- a/lib/netdev-dpdk.c
> +++ b/lib/netdev-dpdk.c
> @@ -2353,5 +2353,5 @@ __netdev_dpdk_vhost_send(struct netdev *netdev, int qid,
>              break;
>          }
> -    } while (cnt && (retries++ <= VHOST_ENQ_RETRY_NUM));
> +    } while (cnt && (retries++ < VHOST_ENQ_RETRY_NUM));

You're removing the packet's last hope to reach home, are you sure? :-)
fbl

>  
>      rte_spinlock_unlock(&dev->tx_q[qid].tx_lock);
> -- 
> 2.20.1
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
Eelco Chaudron June 25, 2019, 8:02 a.m. UTC | #3
On 21 Jun 2019, at 15:41, Kevin Traynor wrote:

> Fix minor issue of one additional retry and add
> documentation about vhost tx retries and ways to
> reduce/remove them.
>
> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
>

<SNIP>

Change looks good to me.

Acked-by: Eelco Chaudron <echaudro@redhat.com>
Kevin Traynor June 25, 2019, 9:32 a.m. UTC | #4
On 24/06/2019 22:40, Flavio Leitner wrote:
> On Fri, Jun 21, 2019 at 02:41:56PM +0100, Kevin Traynor wrote:
>> Fix minor issue of one additional retry and add
>> documentation about vhost tx retries and ways to
>> reduce/remove them.
>>
>> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
>>
>> ---
>> There is a checkpatch warning that one of the libvirt
>> lines in docs is a few characters too long. It is similar
>> for some others in the file and I think it makes sense to
>> leave it as is but can wrap if required.
>> ---
>>  Documentation/topics/dpdk/vhost-user.rst | 31 ++++++++++++++++++++++++
>>  lib/netdev-dpdk.c                        |  2 +-
>>  2 files changed, 32 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
>> index f7b4b338e..d1682fd05 100644
>> --- a/Documentation/topics/dpdk/vhost-user.rst
>> +++ b/Documentation/topics/dpdk/vhost-user.rst
>> @@ -76,4 +76,35 @@ mode ports require QEMU version 2.7.  Ports of type vhost-user are currently
>>  deprecated and will be removed in a future release.
>>  
>> +vhost tx retries
>> +~~~~~~~~~~~~~~~~
>> +
>> +When sending a batch of packets (max is 32) to a vhost-user or
> 
> Maybe use the actual define name (NETDEV_MAX_BURST) since it might change?
> 

I agree the doc could go stale if it ever changed. OTOH, I want a user
to be able to read the doc part as a standalone without having to search
the code. I think best to say NETDEV_MAX_BURST and add it's currently
32. If it ever changed in the code, an author or reviewer would find the
comment through a search and be able to update.

>> +vhost-user-client interface, it may happen that some but not all of the packets
>> +in the batch are able to be sent to the guest. This is often because there is
>> +not enough free descriptors in the virtqueue for all the packets to be sent.
>> +In this case there will be a retry, with a default maximum of 8 occurring. If
>> +at any time no packets can be sent, it may mean the guest is not accepting
>> +packets, so there are no (more) retries.
>> +
>> +Tx Retries may be reduced or removed by some external configuration, such
> 
> s/removed/even avoided/ ?
> 

That sounds better, will change it.

>> +as increasing the virtqueue size through the ``rx_queue_size`` parameter in
>> +libvirt::
>> +
>> +  <interface type='vhostuser'>
>> +      <mac address='56:48:4f:53:54:01'/>
>> +      <source type='unix' path='/tmp/dpdkvhostclient0' mode='server'/>
>> +      <model type='virtio'/>
>> +      <driver name='vhost' rx_queue_size='1024' tx_queue_size='1024'/>
>> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
>> +  </interface>
> 
> Do we need to worry about the qemu version?
> 

hmm, yeah, it was definitely not always available. I will check the
minimum version and add.

>> +
>> +The guest application will also need need to provide enough descriptors. For
>> +example with ``testpmd`` the command line argument can be used::
>> +
>> + --rxd=1024 --txd=1024
>> +
>> +The guest should also have sufficient cores dedicated for consuming and
>> +processing packets at the required rate.
>> +
>>  .. _dpdk-vhost-user:
>>  
>> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
>> index 4856c56aa..0f3b9c6f4 100644
>> --- a/lib/netdev-dpdk.c
>> +++ b/lib/netdev-dpdk.c
>> @@ -2353,5 +2353,5 @@ __netdev_dpdk_vhost_send(struct netdev *netdev, int qid,
>>              break;
>>          }
>> -    } while (cnt && (retries++ <= VHOST_ENQ_RETRY_NUM));
>> +    } while (cnt && (retries++ < VHOST_ENQ_RETRY_NUM));
> 
> You're removing the packet's last hope to reach home, are you sure? :-)

pop-up dialog box coming in v2 :-)

thanks for review,
Kevin.

> fbl
> 
>>  
>>      rte_spinlock_unlock(&dev->tx_q[qid].tx_lock);
>> -- 
>> 2.20.1
>>
>> _______________________________________________
>> dev mailing list
>> dev@openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
Ilya Maximets June 25, 2019, 10:17 a.m. UTC | #5
On 25.06.2019 12:32, Kevin Traynor wrote:
> On 24/06/2019 22:40, Flavio Leitner wrote:
>> On Fri, Jun 21, 2019 at 02:41:56PM +0100, Kevin Traynor wrote:
>>> Fix minor issue of one additional retry and add
>>> documentation about vhost tx retries and ways to
>>> reduce/remove them.
>>>
>>> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
>>>
>>> ---
>>> There is a checkpatch warning that one of the libvirt
>>> lines in docs is a few characters too long. It is similar
>>> for some others in the file and I think it makes sense to
>>> leave it as is but can wrap if required.
>>> ---
>>>  Documentation/topics/dpdk/vhost-user.rst | 31 ++++++++++++++++++++++++
>>>  lib/netdev-dpdk.c                        |  2 +-
>>>  2 files changed, 32 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
>>> index f7b4b338e..d1682fd05 100644
>>> --- a/Documentation/topics/dpdk/vhost-user.rst
>>> +++ b/Documentation/topics/dpdk/vhost-user.rst
>>> @@ -76,4 +76,35 @@ mode ports require QEMU version 2.7.  Ports of type vhost-user are currently
>>>  deprecated and will be removed in a future release.
>>>  
>>> +vhost tx retries
>>> +~~~~~~~~~~~~~~~~
>>> +
>>> +When sending a batch of packets (max is 32) to a vhost-user or
>>
>> Maybe use the actual define name (NETDEV_MAX_BURST) since it might change?
>>
> 
> I agree the doc could go stale if it ever changed. OTOH, I want a user
> to be able to read the doc part as a standalone without having to search
> the code. I think best to say NETDEV_MAX_BURST and add it's currently
> 32. If it ever changed in the code, an author or reviewer would find the
> comment through a search and be able to update.
> 
>>> +vhost-user-client interface, it may happen that some but not all of the packets
>>> +in the batch are able to be sent to the guest. This is often because there is
>>> +not enough free descriptors in the virtqueue for all the packets to be sent.
>>> +In this case there will be a retry, with a default maximum of 8 occurring. If
>>> +at any time no packets can be sent, it may mean the guest is not accepting
>>> +packets, so there are no (more) retries.
>>> +
>>> +Tx Retries may be reduced or removed by some external configuration, such
>>
>> s/removed/even avoided/ ?
>>
> 
> That sounds better, will change it.
> 
>>> +as increasing the virtqueue size through the ``rx_queue_size`` parameter in
>>> +libvirt::
>>> +
>>> +  <interface type='vhostuser'>
>>> +      <mac address='56:48:4f:53:54:01'/>
>>> +      <source type='unix' path='/tmp/dpdkvhostclient0' mode='server'/>
>>> +      <model type='virtio'/>
>>> +      <driver name='vhost' rx_queue_size='1024' tx_queue_size='1024'/>
>>> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
>>> +  </interface>
>>
>> Do we need to worry about the qemu version?
>>
> 
> hmm, yeah, it was definitely not always available. I will check the
> minimum version and add.
> 
>>> +
>>> +The guest application will also need need to provide enough descriptors. For
>>> +example with ``testpmd`` the command line argument can be used::
>>> +
>>> + --rxd=1024 --txd=1024
>>> +
>>> +The guest should also have sufficient cores dedicated for consuming and
>>> +processing packets at the required rate.
>>> +
>>>  .. _dpdk-vhost-user:
>>>  
>>> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
>>> index 4856c56aa..0f3b9c6f4 100644
>>> --- a/lib/netdev-dpdk.c
>>> +++ b/lib/netdev-dpdk.c
>>> @@ -2353,5 +2353,5 @@ __netdev_dpdk_vhost_send(struct netdev *netdev, int qid,
>>>              break;
>>>          }
>>> -    } while (cnt && (retries++ <= VHOST_ENQ_RETRY_NUM));
>>> +    } while (cnt && (retries++ < VHOST_ENQ_RETRY_NUM));
>>
>> You're removing the packet's last hope to reach home, are you sure? :-)
> 
> pop-up dialog box coming in v2 :-)

Maybe we could just increase VHOST_ENQ_RETRY_NUM by 1 to avoid any
functional changes in this patch?
Kevin Traynor June 25, 2019, 10:37 a.m. UTC | #6
On 25/06/2019 11:17, Ilya Maximets wrote:
> On 25.06.2019 12:32, Kevin Traynor wrote:
>> On 24/06/2019 22:40, Flavio Leitner wrote:
>>> On Fri, Jun 21, 2019 at 02:41:56PM +0100, Kevin Traynor wrote:
>>>> Fix minor issue of one additional retry and add
>>>> documentation about vhost tx retries and ways to
>>>> reduce/remove them.
>>>>
>>>> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
>>>>
>>>> ---
>>>> There is a checkpatch warning that one of the libvirt
>>>> lines in docs is a few characters too long. It is similar
>>>> for some others in the file and I think it makes sense to
>>>> leave it as is but can wrap if required.
>>>> ---
>>>>  Documentation/topics/dpdk/vhost-user.rst | 31 ++++++++++++++++++++++++
>>>>  lib/netdev-dpdk.c                        |  2 +-
>>>>  2 files changed, 32 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
>>>> index f7b4b338e..d1682fd05 100644
>>>> --- a/Documentation/topics/dpdk/vhost-user.rst
>>>> +++ b/Documentation/topics/dpdk/vhost-user.rst
>>>> @@ -76,4 +76,35 @@ mode ports require QEMU version 2.7.  Ports of type vhost-user are currently
>>>>  deprecated and will be removed in a future release.
>>>>  
>>>> +vhost tx retries
>>>> +~~~~~~~~~~~~~~~~
>>>> +
>>>> +When sending a batch of packets (max is 32) to a vhost-user or
>>>
>>> Maybe use the actual define name (NETDEV_MAX_BURST) since it might change?
>>>
>>
>> I agree the doc could go stale if it ever changed. OTOH, I want a user
>> to be able to read the doc part as a standalone without having to search
>> the code. I think best to say NETDEV_MAX_BURST and add it's currently
>> 32. If it ever changed in the code, an author or reviewer would find the
>> comment through a search and be able to update.
>>
>>>> +vhost-user-client interface, it may happen that some but not all of the packets
>>>> +in the batch are able to be sent to the guest. This is often because there is
>>>> +not enough free descriptors in the virtqueue for all the packets to be sent.
>>>> +In this case there will be a retry, with a default maximum of 8 occurring. If
>>>> +at any time no packets can be sent, it may mean the guest is not accepting
>>>> +packets, so there are no (more) retries.
>>>> +
>>>> +Tx Retries may be reduced or removed by some external configuration, such
>>>
>>> s/removed/even avoided/ ?
>>>
>>
>> That sounds better, will change it.
>>
>>>> +as increasing the virtqueue size through the ``rx_queue_size`` parameter in
>>>> +libvirt::
>>>> +
>>>> +  <interface type='vhostuser'>
>>>> +      <mac address='56:48:4f:53:54:01'/>
>>>> +      <source type='unix' path='/tmp/dpdkvhostclient0' mode='server'/>
>>>> +      <model type='virtio'/>
>>>> +      <driver name='vhost' rx_queue_size='1024' tx_queue_size='1024'/>
>>>> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
>>>> +  </interface>
>>>
>>> Do we need to worry about the qemu version?
>>>
>>
>> hmm, yeah, it was definitely not always available. I will check the
>> minimum version and add.
>>
>>>> +
>>>> +The guest application will also need need to provide enough descriptors. For
>>>> +example with ``testpmd`` the command line argument can be used::
>>>> +
>>>> + --rxd=1024 --txd=1024
>>>> +
>>>> +The guest should also have sufficient cores dedicated for consuming and
>>>> +processing packets at the required rate.
>>>> +
>>>>  .. _dpdk-vhost-user:
>>>>  
>>>> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
>>>> index 4856c56aa..0f3b9c6f4 100644
>>>> --- a/lib/netdev-dpdk.c
>>>> +++ b/lib/netdev-dpdk.c
>>>> @@ -2353,5 +2353,5 @@ __netdev_dpdk_vhost_send(struct netdev *netdev, int qid,
>>>>              break;
>>>>          }
>>>> -    } while (cnt && (retries++ <= VHOST_ENQ_RETRY_NUM));
>>>> +    } while (cnt && (retries++ < VHOST_ENQ_RETRY_NUM));
>>>
>>> You're removing the packet's last hope to reach home, are you sure? :-)
>>
>> pop-up dialog box coming in v2 :-)
> 
> Maybe we could just increase VHOST_ENQ_RETRY_NUM by 1 to avoid any
> functional changes in this patch?
> 

Just wasn't sure if it was worth it's own patch for something so minor
but I can put it in a separate patch and leave this patch to be pure
docs for v2. I checked last week and it looks like the additional retry
crept in at some point with another change.
diff mbox series

Patch

diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst
index f7b4b338e..d1682fd05 100644
--- a/Documentation/topics/dpdk/vhost-user.rst
+++ b/Documentation/topics/dpdk/vhost-user.rst
@@ -76,4 +76,35 @@  mode ports require QEMU version 2.7.  Ports of type vhost-user are currently
 deprecated and will be removed in a future release.
 
+vhost tx retries
+~~~~~~~~~~~~~~~~
+
+When sending a batch of packets (max is 32) to a vhost-user or
+vhost-user-client interface, it may happen that some but not all of the packets
+in the batch are able to be sent to the guest. This is often because there is
+not enough free descriptors in the virtqueue for all the packets to be sent.
+In this case there will be a retry, with a default maximum of 8 occurring. If
+at any time no packets can be sent, it may mean the guest is not accepting
+packets, so there are no (more) retries.
+
+Tx Retries may be reduced or removed by some external configuration, such
+as increasing the virtqueue size through the ``rx_queue_size`` parameter in
+libvirt::
+
+  <interface type='vhostuser'>
+      <mac address='56:48:4f:53:54:01'/>
+      <source type='unix' path='/tmp/dpdkvhostclient0' mode='server'/>
+      <model type='virtio'/>
+      <driver name='vhost' rx_queue_size='1024' tx_queue_size='1024'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
+  </interface>
+
+The guest application will also need need to provide enough descriptors. For
+example with ``testpmd`` the command line argument can be used::
+
+ --rxd=1024 --txd=1024
+
+The guest should also have sufficient cores dedicated for consuming and
+processing packets at the required rate.
+
 .. _dpdk-vhost-user:
 
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 4856c56aa..0f3b9c6f4 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -2353,5 +2353,5 @@  __netdev_dpdk_vhost_send(struct netdev *netdev, int qid,
             break;
         }
-    } while (cnt && (retries++ <= VHOST_ENQ_RETRY_NUM));
+    } while (cnt && (retries++ < VHOST_ENQ_RETRY_NUM));
 
     rte_spinlock_unlock(&dev->tx_q[qid].tx_lock);