config: enable packet prefetching with Meson

Message ID 20201113145212.486443-1-maxime.coquelin@redhat.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series config: enable packet prefetching with Meson |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Maxime Coquelin Nov. 13, 2020, 2:52 p.m. UTC
  With Make build system, RTE_PMD_PACKET_PREFETCH was enabled
by default. It got lost when transitioning to Meson build
system.

In order to avoid performance changes, this patch enables
packet prefetching in rte_config.h.

Reported-by: Marvin Liu <yong.liu@intel.com>
Suggested-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---

Hi Bruce,

We were not sure whether adding below Fixes tag so that it is
backported to LTSes. What do you think?

Fixes: 9314afb68a53 ("drivers: add infrastructure for meson build")
Cc: stable@dpdk.org

 config/rte_config.h | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Bruce Richardson Nov. 13, 2020, 3:05 p.m. UTC | #1
On Fri, Nov 13, 2020 at 03:52:12PM +0100, Maxime Coquelin wrote:
> With Make build system, RTE_PMD_PACKET_PREFETCH was enabled
> by default. It got lost when transitioning to Meson build
> system.
> 
> In order to avoid performance changes, this patch enables
> packet prefetching in rte_config.h.
> 
> Reported-by: Marvin Liu <yong.liu@intel.com>
> Suggested-by: David Marchand <david.marchand@redhat.com>
> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> ---
> 
> Hi Bruce,
> 
> We were not sure whether adding below Fixes tag so that it is
> backported to LTSes. What do you think?
> 
> Fixes: 9314afb68a53 ("drivers: add infrastructure for meson build")
> Cc: stable@dpdk.org
> 
>  config/rte_config.h | 3 +++
>  1 file changed, 3 insertions(+)
> 
I view it as a gap in the transition from make to meson, so +1 for
adding these. Stable maintainers can then decide themselves on whether to
accept the patch or not.

/Bruce
  
Thomas Monjalon Nov. 14, 2020, 8:51 a.m. UTC | #2
13/11/2020 16:05, Bruce Richardson:
> On Fri, Nov 13, 2020 at 03:52:12PM +0100, Maxime Coquelin wrote:
> > With Make build system, RTE_PMD_PACKET_PREFETCH was enabled
> > by default. It got lost when transitioning to Meson build
> > system.
> > 
> > In order to avoid performance changes, this patch enables
> > packet prefetching in rte_config.h.
> > 
> > Reported-by: Marvin Liu <yong.liu@intel.com>
> > Suggested-by: David Marchand <david.marchand@redhat.com>
> > Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> > ---
> > 
> > Hi Bruce,
> > 
> > We were not sure whether adding below Fixes tag so that it is
> > backported to LTSes. What do you think?
> > 
> > Fixes: 9314afb68a53 ("drivers: add infrastructure for meson build")
> > Cc: stable@dpdk.org
> > 
> >  config/rte_config.h | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> I view it as a gap in the transition from make to meson, so +1 for
> adding these. Stable maintainers can then decide themselves on whether to
> accept the patch or not.

Applied with backport info, thanks.
  
Thomas Monjalon Nov. 14, 2020, 9 a.m. UTC | #3
14/11/2020 09:51, Thomas Monjalon:
> 13/11/2020 16:05, Bruce Richardson:
> > On Fri, Nov 13, 2020 at 03:52:12PM +0100, Maxime Coquelin wrote:
> > > With Make build system, RTE_PMD_PACKET_PREFETCH was enabled
> > > by default. It got lost when transitioning to Meson build
> > > system.
> > > 
> > > In order to avoid performance changes, this patch enables
> > > packet prefetching in rte_config.h.
> > > 
> > > Reported-by: Marvin Liu <yong.liu@intel.com>
> > > Suggested-by: David Marchand <david.marchand@redhat.com>
> > > Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
[...]
> 
> Applied with backport info, thanks.

Note that it is added back for "compatibility",
but I am still in favour of dropping this config option,
replaced by arch decision if any:
http://inbox.dpdk.org/dev/3677226.MZCibFMyqQ@thomas/

The decision of such optimization should be done in DPDK project,
not in the hand of the packager.
  
David Marchand Nov. 14, 2020, 10:54 a.m. UTC | #4
On Sat, Nov 14, 2020 at 10:00 AM Thomas Monjalon <thomas@monjalon.net> wrote:
>
> 14/11/2020 09:51, Thomas Monjalon:
> > 13/11/2020 16:05, Bruce Richardson:
> > > On Fri, Nov 13, 2020 at 03:52:12PM +0100, Maxime Coquelin wrote:
> > > > With Make build system, RTE_PMD_PACKET_PREFETCH was enabled
> > > > by default. It got lost when transitioning to Meson build
> > > > system.
> > > >
> > > > In order to avoid performance changes, this patch enables
> > > > packet prefetching in rte_config.h.
> > > >
> > > > Reported-by: Marvin Liu <yong.liu@intel.com>
> > > > Suggested-by: David Marchand <david.marchand@redhat.com>
> > > > Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> [...]
> >
> > Applied with backport info, thanks.
>
> Note that it is added back for "compatibility",
> but I am still in favour of dropping this config option,
> replaced by arch decision if any:
> http://inbox.dpdk.org/dev/3677226.MZCibFMyqQ@thomas/
>
> The decision of such optimization should be done in DPDK project,
> not in the hand of the packager.

I am for dropping this too.
And for cleaning more prefetch-related stuff, like:

#if 1
#define RTE_PMD_USE_PREFETCH
#endif

#ifdef RTE_PMD_USE_PREFETCH
#define rte_em_prefetch(p)     rte_prefetch0(p)
#else
#define rte_em_prefetch(p)     do {} while(0)
#endif

This has been copied into other drivers.
The igc driver forgot(?) to force #define this macro, so it just
copied unused code.
  

Patch

diff --git a/config/rte_config.h b/config/rte_config.h
index 25219f04af..a0b5160ff2 100644
--- a/config/rte_config.h
+++ b/config/rte_config.h
@@ -103,6 +103,9 @@ 
 
 /****** driver defines ********/
 
+/* Packet prefetching in PMDs */
+#define RTE_PMD_PACKET_PREFETCH 1
+
 /* QuickAssist device */
 /* Max. number of QuickAssist devices which can be attached */
 #define RTE_PMD_QAT_MAX_PCI_DEVICES 48