On Wed, Feb 1, 2023 at 5:06 PM Ferruh Yigit <ferruh.yi...@amd.com> wrote:
>
> On 2/1/2023 11:15 AM, Jerin Jacob wrote:
> > On Wed, Feb 1, 2023 at 4:35 PM Thomas Monjalon <tho...@monjalon.net> wrote:
> >>
> >> 01/02/2023 11:58, Andrew Rybchenko:
> >>> On 2/1/23 13:48, Jerin Jacob wrote:
> >>>> On Wed, Feb 1, 2023 at 2:59 PM Andrew Rybchenko
> >>>> <andrew.rybche...@oktetlabs.ru> wrote:
> >>>>> Frankly speaking I don't understand why default value is so
> >>>>> important if we have a way to change it. Reasons should be
> >>>>> really strong to change existing defaults.
> >>>>
> >>>> The only reason is, typically testpmd will be used performance
> >>>> benchmarking as an industry standard. It is difficult to tell/educate
> >>>> the QA or customers
> >>>> that, "BTW if you need to get better performance add more flag to
> >>>> testpmd command line".
> >>
> >> I disagree.
> >> When you do performance benchmark, you tune settings accordingly.
> >
> > IMO, We tune the system resources like queue depth not the disabling
> > features for raw performance.
> > queue depth etc people know to tune so it is obvious. What is not
> > obvious is, testpmd only
> > negotiated some features by default.I am not using that feature, hence
> > I need to explicitly
> > disable it.
> >
>
> When 'rte_eth_rx_metadata_negotiate()' API is NOT used at all, and I
> believe that is the case for almost all applications since API is a
> relatively new one, PMD default behavior should be to enable Rx metadata
> flow rules, in case user requests them later.
>
> So, enabling all in application is same with not calling the API at all.
>
> In this perspective, disabling Rx metadata is additional
> optimization/tuning that application can do if it is sure that Rx
> metadata flow rules won't be used at all.
> And API is more meaningful when it is used to disable Rx metadata.
>
> I think it is reasonable to enable all Rx metadata by default in testpmd
> with a capability to disable it when wanted.
>
> OR
>
> May be we don't call 'rte_eth_rx_metadata_negotiate()' API by default in
> testpmd, it is only called when it is requested explicitly from user,
> enable or disable.

Second option looks good to me.
When
1) user request for action which is needed negotiate(),
AND
2) rte_eth_rx_metadata_negotiate() != ENOSUP
then, testpmd print a warning that need to enable
rte_eth_rx_metadata_negotiate().


> >
> >>
> >>>> To make that worst, only some PMD needs to give the additional
> >>>> parameter to get better number.
> >>>> And also, testpmd usage will be treated as application modeling.
> >>>>
> >>>> Since this feature only used on sfc and cnxk driver, What is the
> >>>> situation with sfc driver?
> >>>> Keeping it as negotiated and not use the feature, will impact the per
> >>>> core performance of sfc or
> >>>> is it just PCI bandwidth thing which really dont show any difference in 
> >>>> testpmd?
> >>>
> >>> Yes, sfc could run faster if no Rx metadata are negotiated. So,
> >>> it is better to negotiate nothing by default. But it is always
> >>> painful to change defaults. You need to explain that now you
> >>> need to negotiate Rx metadata to use mark, flag and tunnel offloads.
> >>> Yes, it will be required on sfc and cnxk only.
> >>> As an sfc maintainer I don't mind to change testpmd defaults.
> >>
> >> If we change testpmd defaults to "do nothing",
> >> then we should disable MBUF_FAST_FREE as well.
> >
> > if you see MBUF_FAST_FREE, it does nothing. Actually,
> > !MBUF_FAST_FREE is doing more work.
> >
> >
> >>
> >>
>

Reply via email to