diff mbox series

[ovs-dev] vswitchd.xml: Add missing tx-steering PMD option.

Message ID 20220117222521.771593-1-maxime.coquelin@redhat.com
State Changes Requested
Headers show
Series [ovs-dev] vswitchd.xml: Add missing tx-steering PMD option. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed

Commit Message

Maxime Coquelin Jan. 17, 2022, 10:25 p.m. UTC
This patch documents PMD's other_config:tx-steering option.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 vswitchd/vswitch.xml | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

Comments

Kevin Traynor Jan. 18, 2022, 10:51 a.m. UTC | #1
On 17/01/2022 22:25, Maxime Coquelin wrote:
> This patch documents PMD's other_config:tx-steering option.
> 
> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> ---
>   vswitchd/vswitch.xml | 22 ++++++++++++++++++++++
>   1 file changed, 22 insertions(+)
> 
> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
> index 026b5e2ca..ef7f8f2c8 100644
> --- a/vswitchd/vswitch.xml
> +++ b/vswitchd/vswitch.xml
> @@ -3375,6 +3375,28 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
>           </ul>
>           <p>This option may only be used with dpdk VF representors.</p>
>         </column>
> +
> +      <column name="other_config" key="tx-steering"
> +              type='{"type": "string",
> +                     "enum": ["set", ["thread", "hash"]]}'>
> +        <p>
> +          Specifies the Tx steering mode for the interface.
> +        </p>
> +        <p>
> +          <code>thread</code> enables static txq mapping when the number of txq
> +          is greater or equal than the number of PMD threads, and XPS mode if
> +          lower than the number of PMD threads.

I think it should be 'greater than PMD threads, and XPS mode if equal or 
lower than the number of PMD threads.', because one txq is also needed 
for the OVS main thread. I checked the code and this txq is accounted 
for in wanted_txqs.

With this fix:
Acked-by: Kevin Traynor <ktraynor@redhat.com>

> +        </p>
> +        <p>
> +          <code>hash</code> enables hash-based Tx steering, which distributes
> +          the packets on all the transmit queues based on their 5-tuples
> +          hashes.
> +        </p>
> +        <p>
> +          Defaults to <code>thread</code>.
> +        </p>
> +      </column>
> +
>       </group>
>   
>       <group title="EMC (Exact Match Cache) Configuration">
>
Ilya Maximets Jan. 20, 2022, 12:16 p.m. UTC | #2
On 1/18/22 11:51, Kevin Traynor wrote:
> On 17/01/2022 22:25, Maxime Coquelin wrote:
>> This patch documents PMD's other_config:tx-steering option.
>>
>> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
>> ---
>>   vswitchd/vswitch.xml | 22 ++++++++++++++++++++++
>>   1 file changed, 22 insertions(+)
>>
>> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
>> index 026b5e2ca..ef7f8f2c8 100644
>> --- a/vswitchd/vswitch.xml
>> +++ b/vswitchd/vswitch.xml
>> @@ -3375,6 +3375,28 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
>>           </ul>
>>           <p>This option may only be used with dpdk VF representors.</p>
>>         </column>
>> +
>> +      <column name="other_config" key="tx-steering"
>> +              type='{"type": "string",
>> +                     "enum": ["set", ["thread", "hash"]]}'>
>> +        <p>
>> +          Specifies the Tx steering mode for the interface.
>> +        </p>
>> +        <p>
>> +          <code>thread</code> enables static txq mapping when the number of txq
>> +          is greater or equal than the number of PMD threads, and XPS mode if
>> +          lower than the number of PMD threads.
> 
> I think it should be 'greater than PMD threads, and XPS mode if equal or lower
> than the number of PMD threads.', because one txq is also needed for the OVS
> main thread. I checked the code and this txq is accounted for in wanted_txqs.

I would also recommend to not use the 'XPS' as a name for the dynamic txq mapping
in the 'thread' mode.  Because all of this is a sort of XPS.  The hash mode is
a form of {trans,x}mit packet steering too.
So, something like this maybe:

  <code>thread</code> enables static (1:1) thread-to-txq mapping when the
  number of Tx queues is greater than number of PMD threads, and dynamic (N:1)
  mapping if equal or lower.  In this mode a single thread can not use more
  than 1 transmit queue of a given port.

And, I think, we need to fix the userspace-tx-steering.rst too, e.g.:

  Depending on the port's number of Tx queues being greater or equal than the
  number of PMD threads, static (1:1) or dynamic (N:1) thread-to-txq mapping
  will be used.

Maxime, Kevin, what do you think?

> 
> With this fix:
> Acked-by: Kevin Traynor <ktraynor@redhat.com>
> 
>> +        </p>
>> +        <p>
>> +          <code>hash</code> enables hash-based Tx steering, which distributes
>> +          the packets on all the transmit queues based on their 5-tuples
>> +          hashes.
>> +        </p>
>> +        <p>
>> +          Defaults to <code>thread</code>.
>> +        </p>
>> +      </column>
>> +
>>       </group>
>>         <group title="EMC (Exact Match Cache) Configuration">
>>
>
Maxime Coquelin Jan. 20, 2022, 12:43 p.m. UTC | #3
Hi, Ilya, Kevin,

On 1/20/22 13:16, Ilya Maximets wrote:
> On 1/18/22 11:51, Kevin Traynor wrote:
>> On 17/01/2022 22:25, Maxime Coquelin wrote:
>>> This patch documents PMD's other_config:tx-steering option.
>>>
>>> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
>>> ---
>>>    vswitchd/vswitch.xml | 22 ++++++++++++++++++++++
>>>    1 file changed, 22 insertions(+)
>>>
>>> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
>>> index 026b5e2ca..ef7f8f2c8 100644
>>> --- a/vswitchd/vswitch.xml
>>> +++ b/vswitchd/vswitch.xml
>>> @@ -3375,6 +3375,28 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
>>>            </ul>
>>>            <p>This option may only be used with dpdk VF representors.</p>
>>>          </column>
>>> +
>>> +      <column name="other_config" key="tx-steering"
>>> +              type='{"type": "string",
>>> +                     "enum": ["set", ["thread", "hash"]]}'>
>>> +        <p>
>>> +          Specifies the Tx steering mode for the interface.
>>> +        </p>
>>> +        <p>
>>> +          <code>thread</code> enables static txq mapping when the number of txq
>>> +          is greater or equal than the number of PMD threads, and XPS mode if
>>> +          lower than the number of PMD threads.
>>
>> I think it should be 'greater than PMD threads, and XPS mode if equal or lower
>> than the number of PMD threads.', because one txq is also needed for the OVS
>> main thread. I checked the code and this txq is accounted for in wanted_txqs.
> 
> I would also recommend to not use the 'XPS' as a name for the dynamic txq mapping
> in the 'thread' mode.  Because all of this is a sort of XPS.  The hash mode is
> a form of {trans,x}mit packet steering too.
> So, something like this maybe:
> 
>    <code>thread</code> enables static (1:1) thread-to-txq mapping when the
>    number of Tx queues is greater than number of PMD threads, and dynamic (N:1)
>    mapping if equal or lower.  In this mode a single thread can not use more
>    than 1 transmit queue of a given port.
> 
> And, I think, we need to fix the userspace-tx-steering.rst too, e.g.:
> 
>    Depending on the port's number of Tx queues being greater or equal than the
>    number of PMD threads, static (1:1) or dynamic (N:1) thread-to-txq mapping
>    will be used.
> 
> Maxime, Kevin, what do you think?

I agree with your suggestions, I'll post a new revision tomorrow, that
will include userspace-tx-steering.rst changes too.

Thanks,
Maxime

>>
>> With this fix:
>> Acked-by: Kevin Traynor <ktraynor@redhat.com>
>>
>>> +        </p>
>>> +        <p>
>>> +          <code>hash</code> enables hash-based Tx steering, which distributes
>>> +          the packets on all the transmit queues based on their 5-tuples
>>> +          hashes.
>>> +        </p>
>>> +        <p>
>>> +          Defaults to <code>thread</code>.
>>> +        </p>
>>> +      </column>
>>> +
>>>        </group>
>>>          <group title="EMC (Exact Match Cache) Configuration">
>>>
>>
>
Kevin Traynor Jan. 20, 2022, 1:20 p.m. UTC | #4
On 20/01/2022 12:16, Ilya Maximets wrote:
> On 1/18/22 11:51, Kevin Traynor wrote:
>> On 17/01/2022 22:25, Maxime Coquelin wrote:
>>> This patch documents PMD's other_config:tx-steering option.
>>>
>>> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
>>> ---
>>>    vswitchd/vswitch.xml | 22 ++++++++++++++++++++++
>>>    1 file changed, 22 insertions(+)
>>>
>>> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
>>> index 026b5e2ca..ef7f8f2c8 100644
>>> --- a/vswitchd/vswitch.xml
>>> +++ b/vswitchd/vswitch.xml
>>> @@ -3375,6 +3375,28 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
>>>            </ul>
>>>            <p>This option may only be used with dpdk VF representors.</p>
>>>          </column>
>>> +
>>> +      <column name="other_config" key="tx-steering"
>>> +              type='{"type": "string",
>>> +                     "enum": ["set", ["thread", "hash"]]}'>
>>> +        <p>
>>> +          Specifies the Tx steering mode for the interface.
>>> +        </p>
>>> +        <p>
>>> +          <code>thread</code> enables static txq mapping when the number of txq
>>> +          is greater or equal than the number of PMD threads, and XPS mode if
>>> +          lower than the number of PMD threads.
>>
>> I think it should be 'greater than PMD threads, and XPS mode if equal or lower
>> than the number of PMD threads.', because one txq is also needed for the OVS
>> main thread. I checked the code and this txq is accounted for in wanted_txqs.
> 
> I would also recommend to not use the 'XPS' as a name for the dynamic txq mapping
> in the 'thread' mode.  Because all of this is a sort of XPS.  The hash mode is
> a form of {trans,x}mit packet steering too.
> So, something like this maybe:
> 
>    <code>thread</code> enables static (1:1) thread-to-txq mapping when the
>    number of Tx queues is greater than number of PMD threads, and dynamic (N:1)
>    mapping if equal or lower.  In this mode a single thread can not use more
>    than 1 transmit queue of a given port.
> 
> And, I think, we need to fix the userspace-tx-steering.rst too, e.g.:
> 
>    Depending on the port's number of Tx queues being greater or equal than the
>    number of PMD threads, static (1:1) or dynamic (N:1) thread-to-txq mapping
>    will be used.
> 
> Maxime, Kevin, what do you think?
> 

+1. Only thing I'd add is to explicitly associate each mode with the 
txq/PMD values in the rst, like it is done in the xml.

>>
>> With this fix:
>> Acked-by: Kevin Traynor <ktraynor@redhat.com>
>>
>>> +        </p>
>>> +        <p>
>>> +          <code>hash</code> enables hash-based Tx steering, which distributes
>>> +          the packets on all the transmit queues based on their 5-tuples
>>> +          hashes.
>>> +        </p>
>>> +        <p>
>>> +          Defaults to <code>thread</code>.
>>> +        </p>
>>> +      </column>
>>> +
>>>        </group>
>>>          <group title="EMC (Exact Match Cache) Configuration">
>>>
>>
>
Maxime Coquelin Jan. 24, 2022, 4 p.m. UTC | #5
On 1/20/22 14:20, Kevin Traynor wrote:
> On 20/01/2022 12:16, Ilya Maximets wrote:
>> On 1/18/22 11:51, Kevin Traynor wrote:
>>> On 17/01/2022 22:25, Maxime Coquelin wrote:
>>>> This patch documents PMD's other_config:tx-steering option.
>>>>
>>>> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
>>>> ---
>>>>    vswitchd/vswitch.xml | 22 ++++++++++++++++++++++
>>>>    1 file changed, 22 insertions(+)
>>>>
>>>> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
>>>> index 026b5e2ca..ef7f8f2c8 100644
>>>> --- a/vswitchd/vswitch.xml
>>>> +++ b/vswitchd/vswitch.xml
>>>> @@ -3375,6 +3375,28 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 
>>>> type=patch options:peer=p1 \
>>>>            </ul>
>>>>            <p>This option may only be used with dpdk VF 
>>>> representors.</p>
>>>>          </column>
>>>> +
>>>> +      <column name="other_config" key="tx-steering"
>>>> +              type='{"type": "string",
>>>> +                     "enum": ["set", ["thread", "hash"]]}'>
>>>> +        <p>
>>>> +          Specifies the Tx steering mode for the interface.
>>>> +        </p>
>>>> +        <p>
>>>> +          <code>thread</code> enables static txq mapping when the 
>>>> number of txq
>>>> +          is greater or equal than the number of PMD threads, and 
>>>> XPS mode if
>>>> +          lower than the number of PMD threads.
>>>
>>> I think it should be 'greater than PMD threads, and XPS mode if equal 
>>> or lower
>>> than the number of PMD threads.', because one txq is also needed for 
>>> the OVS
>>> main thread. I checked the code and this txq is accounted for in 
>>> wanted_txqs.
>>
>> I would also recommend to not use the 'XPS' as a name for the dynamic 
>> txq mapping
>> in the 'thread' mode.  Because all of this is a sort of XPS.  The hash 
>> mode is
>> a form of {trans,x}mit packet steering too.
>> So, something like this maybe:
>>
>>    <code>thread</code> enables static (1:1) thread-to-txq mapping when 
>> the
>>    number of Tx queues is greater than number of PMD threads, and 
>> dynamic (N:1)
>>    mapping if equal or lower.  In this mode a single thread can not 
>> use more
>>    than 1 transmit queue of a given port.
>>
>> And, I think, we need to fix the userspace-tx-steering.rst too, e.g.:
>>
>>    Depending on the port's number of Tx queues being greater or equal 
>> than the
>>    number of PMD threads, static (1:1) or dynamic (N:1) thread-to-txq 
>> mapping
>>    will be used.
>>
>> Maxime, Kevin, what do you think?
>>
> 
> +1. Only thing I'd add is to explicitly associate each mode with the 
> txq/PMD values in the rst, like it is done in the xml.

Agree, I'm changing the paragraph to:
"
Thread mode enables static (1:1) thread-to-txq mapping when the number of Tx
queues is greater than number of PMD threads, and dynamic (N:1) mapping if
equal or lower.  In this mode a single thread can not use more than 1 
transmit
queue of a given port.

This is the recommended mode for performance reasons if the number of Tx 
queues
is greater than the number of PMD threads, because the Tx lock is not 
acquired.

If the number of Tx queues is greater than the number of threads 
(including the
main thread), the remaining Tx queues will not be used.
"

Sounds good to you?

Thanks,
Maxime

>>>
>>> With this fix:
>>> Acked-by: Kevin Traynor <ktraynor@redhat.com>
>>>
>>>> +        </p>
>>>> +        <p>
>>>> +          <code>hash</code> enables hash-based Tx steering, which 
>>>> distributes
>>>> +          the packets on all the transmit queues based on their 
>>>> 5-tuples
>>>> +          hashes.
>>>> +        </p>
>>>> +        <p>
>>>> +          Defaults to <code>thread</code>.
>>>> +        </p>
>>>> +      </column>
>>>> +
>>>>        </group>
>>>>          <group title="EMC (Exact Match Cache) Configuration">
>>>>
>>>
>>
>
Kevin Traynor Jan. 24, 2022, 4:08 p.m. UTC | #6
On 24/01/2022 16:00, Maxime Coquelin wrote:
> 
> 
> On 1/20/22 14:20, Kevin Traynor wrote:
>> On 20/01/2022 12:16, Ilya Maximets wrote:
>>> On 1/18/22 11:51, Kevin Traynor wrote:
>>>> On 17/01/2022 22:25, Maxime Coquelin wrote:
>>>>> This patch documents PMD's other_config:tx-steering option.
>>>>>
>>>>> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
>>>>> ---
>>>>>     vswitchd/vswitch.xml | 22 ++++++++++++++++++++++
>>>>>     1 file changed, 22 insertions(+)
>>>>>
>>>>> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
>>>>> index 026b5e2ca..ef7f8f2c8 100644
>>>>> --- a/vswitchd/vswitch.xml
>>>>> +++ b/vswitchd/vswitch.xml
>>>>> @@ -3375,6 +3375,28 @@ ovs-vsctl add-port br0 p0 -- set Interface p0
>>>>> type=patch options:peer=p1 \
>>>>>             </ul>
>>>>>             <p>This option may only be used with dpdk VF
>>>>> representors.</p>
>>>>>           </column>
>>>>> +
>>>>> +      <column name="other_config" key="tx-steering"
>>>>> +              type='{"type": "string",
>>>>> +                     "enum": ["set", ["thread", "hash"]]}'>
>>>>> +        <p>
>>>>> +          Specifies the Tx steering mode for the interface.
>>>>> +        </p>
>>>>> +        <p>
>>>>> +          <code>thread</code> enables static txq mapping when the
>>>>> number of txq
>>>>> +          is greater or equal than the number of PMD threads, and
>>>>> XPS mode if
>>>>> +          lower than the number of PMD threads.
>>>>
>>>> I think it should be 'greater than PMD threads, and XPS mode if equal
>>>> or lower
>>>> than the number of PMD threads.', because one txq is also needed for
>>>> the OVS
>>>> main thread. I checked the code and this txq is accounted for in
>>>> wanted_txqs.
>>>
>>> I would also recommend to not use the 'XPS' as a name for the dynamic
>>> txq mapping
>>> in the 'thread' mode.  Because all of this is a sort of XPS.  The hash
>>> mode is
>>> a form of {trans,x}mit packet steering too.
>>> So, something like this maybe:
>>>
>>>     <code>thread</code> enables static (1:1) thread-to-txq mapping when
>>> the
>>>     number of Tx queues is greater than number of PMD threads, and
>>> dynamic (N:1)
>>>     mapping if equal or lower.  In this mode a single thread can not
>>> use more
>>>     than 1 transmit queue of a given port.
>>>
>>> And, I think, we need to fix the userspace-tx-steering.rst too, e.g.:
>>>
>>>     Depending on the port's number of Tx queues being greater or equal
>>> than the
>>>     number of PMD threads, static (1:1) or dynamic (N:1) thread-to-txq
>>> mapping
>>>     will be used.
>>>
>>> Maxime, Kevin, what do you think?
>>>
>>
>> +1. Only thing I'd add is to explicitly associate each mode with the
>> txq/PMD values in the rst, like it is done in the xml.
> 
> Agree, I'm changing the paragraph to:
> "
> Thread mode enables static (1:1) thread-to-txq mapping when the number of Tx
> queues is greater than number of PMD threads, and dynamic (N:1) mapping if
> equal or lower.  In this mode a single thread can not use more than 1
> transmit
> queue of a given port.
> 
> This is the recommended mode for performance reasons if the number of Tx
> queues
> is greater than the number of PMD threads, because the Tx lock is not
> acquired.
> 
> If the number of Tx queues is greater than the number of threads
> (including the
> main thread), the remaining Tx queues will not be used.
> "
> 
> Sounds good to you?
> 

LGTM. You can add my Ack on the updated patch. Thanks Maxime.

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

> Thanks,
> Maxime
> 
>>>>
>>>> With this fix:
>>>> Acked-by: Kevin Traynor <ktraynor@redhat.com>
>>>>
>>>>> +        </p>
>>>>> +        <p>
>>>>> +          <code>hash</code> enables hash-based Tx steering, which
>>>>> distributes
>>>>> +          the packets on all the transmit queues based on their
>>>>> 5-tuples
>>>>> +          hashes.
>>>>> +        </p>
>>>>> +        <p>
>>>>> +          Defaults to <code>thread</code>.
>>>>> +        </p>
>>>>> +      </column>
>>>>> +
>>>>>         </group>
>>>>>           <group title="EMC (Exact Match Cache) Configuration">
>>>>>
>>>>
>>>
>>
>
diff mbox series

Patch

diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index 026b5e2ca..ef7f8f2c8 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -3375,6 +3375,28 @@  ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
         </ul>
         <p>This option may only be used with dpdk VF representors.</p>
       </column>
+
+      <column name="other_config" key="tx-steering"
+              type='{"type": "string",
+                     "enum": ["set", ["thread", "hash"]]}'>
+        <p>
+          Specifies the Tx steering mode for the interface.
+        </p>
+        <p>
+          <code>thread</code> enables static txq mapping when the number of txq
+          is greater or equal than the number of PMD threads, and XPS mode if
+          lower than the number of PMD threads.
+        </p>
+        <p>
+          <code>hash</code> enables hash-based Tx steering, which distributes
+          the packets on all the transmit queues based on their 5-tuples
+          hashes.
+        </p>
+        <p>
+          Defaults to <code>thread</code>.
+        </p>
+      </column>
+
     </group>
 
     <group title="EMC (Exact Match Cache) Configuration">