mbox series

[v12,0/5] eal: add WC store functions

Message ID 20200923142253.18853-1-radu.nicolau@intel.com (mailing list archive)
Headers show
Series eal: add WC store functions | expand

Message

Radu Nicolau Sept. 23, 2020, 2:22 p.m. UTC
Implement 2 new functions that will enable write combining
stores depending on architecture. The functions are provided
as a generic stub and a x86 specific implementation.

The reason to implement these functions is to improve performance
by reducing the overhead associated with regular mmio writes when
updating the hardware queue tails and doorbells.

With this patch set the I40E, ICE, IXGBE and QAT PMDs are updated to
use the write combining store functions with other PMDs to follow.


Radu Nicolau (5):
  eal: add WC store functions
  net/i40e: use WC store to update queue tail registers
  common/qat: use WC store to update queue tail registers
  net/ixgbe: use WC store to update queue tail registers
  net/ice: use WC store to update queue tail registers

 doc/guides/rel_notes/release_20_11.rst        | 22 +++++++++
 .../qat/qat_adf/adf_transport_access_macros.h |  6 ++-
 drivers/net/i40e/base/i40e_osdep.h            |  5 ++
 drivers/net/i40e/i40e_rxtx.c                  |  8 ++--
 drivers/net/i40e/i40e_rxtx_vec_avx2.c         |  4 +-
 drivers/net/i40e/i40e_rxtx_vec_sse.c          |  4 +-
 drivers/net/ice/base/ice_osdep.h              |  1 +
 drivers/net/ice/ice_rxtx.c                    |  6 +--
 drivers/net/ice/ice_rxtx_vec_avx2.c           |  4 +-
 drivers/net/ice/ice_rxtx_vec_sse.c            |  4 +-
 drivers/net/ixgbe/base/ixgbe_osdep.h          |  6 +++
 drivers/net/ixgbe/ixgbe_rxtx.c                | 15 +++---
 drivers/net/ixgbe/ixgbe_rxtx_vec_sse.c        |  4 +-
 lib/librte_eal/arm/include/rte_io_64.h        | 12 +++++
 lib/librte_eal/include/generic/rte_io.h       | 48 +++++++++++++++++++
 lib/librte_eal/x86/include/rte_io.h           | 42 ++++++++++++++++
 16 files changed, 165 insertions(+), 26 deletions(-)

Comments

David Marchand Oct. 8, 2020, 7:28 a.m. UTC | #1
On Wed, Sep 23, 2020 at 4:23 PM Radu Nicolau <radu.nicolau@intel.com> wrote:
>
> Implement 2 new functions that will enable write combining
> stores depending on architecture. The functions are provided
> as a generic stub and a x86 specific implementation.
>
> The reason to implement these functions is to improve performance
> by reducing the overhead associated with regular mmio writes when
> updating the hardware queue tails and doorbells.

For the record, on which CPU/platform was this tested and how much of
an improvement did you get with this?

I did not see review/ack tokens from other arch maintainers, but since
it has been on the ml for a while, I guess I can proceed as is.


>
> With this patch set the I40E, ICE, IXGBE and QAT PMDs are updated to
> use the write combining store functions with other PMDs to follow.

This series will go through the main repo: copying Ferruh and Akhil for info.
Radu Nicolau Oct. 8, 2020, 9:51 a.m. UTC | #2
On 10/8/2020 8:28 AM, David Marchand wrote:
> On Wed, Sep 23, 2020 at 4:23 PM Radu Nicolau <radu.nicolau@intel.com> wrote:
>> Implement 2 new functions that will enable write combining
>> stores depending on architecture. The functions are provided
>> as a generic stub and a x86 specific implementation.
>>
>> The reason to implement these functions is to improve performance
>> by reducing the overhead associated with regular mmio writes when
>> updating the hardware queue tails and doorbells.
> For the record, on which CPU/platform was this tested and how much of
> an improvement did you get with this?

The improvement varies a lot with the particular usecase and the PMD, so 
it's difficult to state a number, but there were cases with performance 
improvements going well into the double digits, with very small bursts 
applications seeing the most benefits. Tests were done on a Snow Ridge 
platform.


>
> I did not see review/ack tokens from other arch maintainers, but since
> it has been on the ml for a while, I guess I can proceed as is.
>
>
>> With this patch set the I40E, ICE, IXGBE and QAT PMDs are updated to
>> use the write combining store functions with other PMDs to follow.
> This series will go through the main repo: copying Ferruh and Akhil for info.
>
>
Ferruh Yigit Oct. 13, 2020, 8:57 a.m. UTC | #3
On 10/8/2020 8:28 AM, David Marchand wrote:
> On Wed, Sep 23, 2020 at 4:23 PM Radu Nicolau <radu.nicolau@intel.com> wrote:
>>
>> Implement 2 new functions that will enable write combining
>> stores depending on architecture. The functions are provided
>> as a generic stub and a x86 specific implementation.
>>
>> The reason to implement these functions is to improve performance
>> by reducing the overhead associated with regular mmio writes when
>> updating the hardware queue tails and doorbells.
> 
> For the record, on which CPU/platform was this tested and how much of
> an improvement did you get with this?
> 
> I did not see review/ack tokens from other arch maintainers, but since
> it has been on the ml for a while, I guess I can proceed as is.
> 
> 
>>
>> With this patch set the I40E, ICE, IXGBE and QAT PMDs are updated to
>> use the write combining store functions with other PMDs to follow.
> 
> This series will go through the main repo: copying Ferruh and Akhil for info.
> 

Sounds good to me, +1 to not separate the driver implementation from actual change.
David Marchand Oct. 13, 2020, 12:50 p.m. UTC | #4
On Wed, Sep 23, 2020 at 4:23 PM Radu Nicolau <radu.nicolau@intel.com> wrote:
>
> Implement 2 new functions that will enable write combining
> stores depending on architecture. The functions are provided
> as a generic stub and a x86 specific implementation.
>
> The reason to implement these functions is to improve performance
> by reducing the overhead associated with regular mmio writes when
> updating the hardware queue tails and doorbells.
>
> With this patch set the I40E, ICE, IXGBE and QAT PMDs are updated to
> use the write combining store functions with other PMDs to follow.
>
>
> Radu Nicolau (5):
>   eal: add WC store functions
>   net/i40e: use WC store to update queue tail registers
>   common/qat: use WC store to update queue tail registers
>   net/ixgbe: use WC store to update queue tail registers
>   net/ice: use WC store to update queue tail registers

Series applied.