mbox series

[v1,0/4] get Rx/Tx packet burst mode information

Message ID 20190926114818.91063-1-haiyue.wang@intel.com (mailing list archive)
Headers
Series get Rx/Tx packet burst mode information |

Message

Wang, Haiyue Sept. 26, 2019, 11:48 a.m. UTC
  RFCv3 -> v1:
	https://patchwork.dpdk.org/patch/59103/
	https://patchwork.dpdk.org/patch/59104/
	https://patchwork.dpdk.org/patch/59105/
	https://patchwork.dpdk.org/patch/59106/
	1). Use the function 'rte_bsf64' to iterate the options for
	    getting the name.

Haiyue Wang (4):
  ethdev: add the API for getting burst mode information
  net/i40e: support to get the Rx/Tx burst mode
  net/ice: support to get the Rx/Tx burst mode
  app/testpmd: show the Rx/Tx burst mode description

 app/test-pmd/config.c                    | 29 +++++++++
 doc/guides/rel_notes/release_19_11.rst   |  9 +++
 drivers/net/i40e/i40e_ethdev.c           |  2 +
 drivers/net/i40e/i40e_ethdev.h           |  4 ++
 drivers/net/i40e/i40e_rxtx.c             | 72 +++++++++++++++++++++
 drivers/net/ice/ice_ethdev.c             |  2 +
 drivers/net/ice/ice_rxtx.c               | 54 ++++++++++++++++
 drivers/net/ice/ice_rxtx.h               |  4 ++
 lib/librte_ethdev/rte_ethdev.c           | 75 ++++++++++++++++++++++
 lib/librte_ethdev/rte_ethdev.h           | 82 ++++++++++++++++++++++++
 lib/librte_ethdev/rte_ethdev_core.h      |  5 ++
 lib/librte_ethdev/rte_ethdev_version.map |  5 ++
 12 files changed, 343 insertions(+)
  

Comments

Stephen Hemminger Sept. 26, 2019, 3:57 p.m. UTC | #1
On Thu, 26 Sep 2019 19:48:14 +0800
Haiyue Wang <haiyue.wang@intel.com> wrote:

> RFCv3 -> v1:
> 	https://patchwork.dpdk.org/patch/59103/
> 	https://patchwork.dpdk.org/patch/59104/
> 	https://patchwork.dpdk.org/patch/59105/
> 	https://patchwork.dpdk.org/patch/59106/
> 	1). Use the function 'rte_bsf64' to iterate the options for
> 	    getting the name.
> 
> Haiyue Wang (4):
>   ethdev: add the API for getting burst mode information
>   net/i40e: support to get the Rx/Tx burst mode
>   net/ice: support to get the Rx/Tx burst mode
>   app/testpmd: show the Rx/Tx burst mode description
> 
>  app/test-pmd/config.c                    | 29 +++++++++
>  doc/guides/rel_notes/release_19_11.rst   |  9 +++
>  drivers/net/i40e/i40e_ethdev.c           |  2 +
>  drivers/net/i40e/i40e_ethdev.h           |  4 ++
>  drivers/net/i40e/i40e_rxtx.c             | 72 +++++++++++++++++++++
>  drivers/net/ice/ice_ethdev.c             |  2 +
>  drivers/net/ice/ice_rxtx.c               | 54 ++++++++++++++++
>  drivers/net/ice/ice_rxtx.h               |  4 ++
>  lib/librte_ethdev/rte_ethdev.c           | 75 ++++++++++++++++++++++
>  lib/librte_ethdev/rte_ethdev.h           | 82 ++++++++++++++++++++++++
>  lib/librte_ethdev/rte_ethdev_core.h      |  5 ++
>  lib/librte_ethdev/rte_ethdev_version.map |  5 ++
>  12 files changed, 343 insertions(+)
> 

A couple of meta comments:
1) Could this be part of dev_info_get somehow?

2) Why should application care? Is this just a test hook?
  
Wang, Haiyue Sept. 26, 2019, 4:36 p.m. UTC | #2
Hi Stephen,

> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Thursday, September 26, 2019 23:57
> To: Wang, Haiyue <haiyue.wang@intel.com>
> Cc: dev@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>;
> Kinsella, Ray <ray.kinsella@intel.com>; Iremonger, Bernard <bernard.iremonger@intel.com>; Sun, Chenmin
> <chenmin.sun@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v1 0/4] get Rx/Tx packet burst mode information
> 
> On Thu, 26 Sep 2019 19:48:14 +0800
> Haiyue Wang <haiyue.wang@intel.com> wrote:
> 
> > RFCv3 -> v1:
> > 	https://patchwork.dpdk.org/patch/59103/
> > 	https://patchwork.dpdk.org/patch/59104/
> > 	https://patchwork.dpdk.org/patch/59105/
> > 	https://patchwork.dpdk.org/patch/59106/
> > 	1). Use the function 'rte_bsf64' to iterate the options for
> > 	    getting the name.
> >
> > Haiyue Wang (4):
> >   ethdev: add the API for getting burst mode information
> >   net/i40e: support to get the Rx/Tx burst mode
> >   net/ice: support to get the Rx/Tx burst mode
> >   app/testpmd: show the Rx/Tx burst mode description
> >
> >  app/test-pmd/config.c                    | 29 +++++++++
> >  doc/guides/rel_notes/release_19_11.rst   |  9 +++
> >  drivers/net/i40e/i40e_ethdev.c           |  2 +
> >  drivers/net/i40e/i40e_ethdev.h           |  4 ++
> >  drivers/net/i40e/i40e_rxtx.c             | 72 +++++++++++++++++++++
> >  drivers/net/ice/ice_ethdev.c             |  2 +
> >  drivers/net/ice/ice_rxtx.c               | 54 ++++++++++++++++
> >  drivers/net/ice/ice_rxtx.h               |  4 ++
> >  lib/librte_ethdev/rte_ethdev.c           | 75 ++++++++++++++++++++++
> >  lib/librte_ethdev/rte_ethdev.h           | 82 ++++++++++++++++++++++++
> >  lib/librte_ethdev/rte_ethdev_core.h      |  5 ++
> >  lib/librte_ethdev/rte_ethdev_version.map |  5 ++
> >  12 files changed, 343 insertions(+)
> >
> 
> A couple of meta comments:
> 1) Could this be part of dev_info_get somehow?
> 

https://patchwork.dpdk.org/patch/57624/
'Think of a better way that doesn't break ABI.'  ;-)

> 2) Why should application care? Is this just a test hook?

https://patches.dpdk.org/cover/57623/
This is from FD.io VPP's bug, and finally, we come out
this API for application accessing the burst mode information.
It can be used as a simple trace or something like performance
analysis like why slow ? Not in vector, anyway, application can
get this burst mode information now, not just open PMD debug log
level.
  
Stephen Hemminger Sept. 26, 2019, 5:15 p.m. UTC | #3
On Thu, 26 Sep 2019 16:36:09 +0000
"Wang, Haiyue" <haiyue.wang@intel.com> wrote:

> Hi Stephen,
> 
> > -----Original Message-----
> > From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> > Sent: Thursday, September 26, 2019 23:57
> > To: Wang, Haiyue <haiyue.wang@intel.com>
> > Cc: dev@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>;
> > Kinsella, Ray <ray.kinsella@intel.com>; Iremonger, Bernard <bernard.iremonger@intel.com>; Sun, Chenmin
> > <chenmin.sun@intel.com>
> > Subject: Re: [dpdk-dev] [PATCH v1 0/4] get Rx/Tx packet burst mode information
> > 
> > On Thu, 26 Sep 2019 19:48:14 +0800
> > Haiyue Wang <haiyue.wang@intel.com> wrote:
> >   
> > > RFCv3 -> v1:
> > > 	https://patchwork.dpdk.org/patch/59103/
> > > 	https://patchwork.dpdk.org/patch/59104/
> > > 	https://patchwork.dpdk.org/patch/59105/
> > > 	https://patchwork.dpdk.org/patch/59106/
> > > 	1). Use the function 'rte_bsf64' to iterate the options for
> > > 	    getting the name.
> > >
> > > Haiyue Wang (4):
> > >   ethdev: add the API for getting burst mode information
> > >   net/i40e: support to get the Rx/Tx burst mode
> > >   net/ice: support to get the Rx/Tx burst mode
> > >   app/testpmd: show the Rx/Tx burst mode description
> > >
> > >  app/test-pmd/config.c                    | 29 +++++++++
> > >  doc/guides/rel_notes/release_19_11.rst   |  9 +++
> > >  drivers/net/i40e/i40e_ethdev.c           |  2 +
> > >  drivers/net/i40e/i40e_ethdev.h           |  4 ++
> > >  drivers/net/i40e/i40e_rxtx.c             | 72 +++++++++++++++++++++
> > >  drivers/net/ice/ice_ethdev.c             |  2 +
> > >  drivers/net/ice/ice_rxtx.c               | 54 ++++++++++++++++
> > >  drivers/net/ice/ice_rxtx.h               |  4 ++
> > >  lib/librte_ethdev/rte_ethdev.c           | 75 ++++++++++++++++++++++
> > >  lib/librte_ethdev/rte_ethdev.h           | 82 ++++++++++++++++++++++++
> > >  lib/librte_ethdev/rte_ethdev_core.h      |  5 ++
> > >  lib/librte_ethdev/rte_ethdev_version.map |  5 ++
> > >  12 files changed, 343 insertions(+)
> > >  
> > 
> > A couple of meta comments:
> > 1) Could this be part of dev_info_get somehow?
> >   
> 
> https://patchwork.dpdk.org/patch/57624/
> 'Think of a better way that doesn't break ABI.'  ;-)

That comment was made relative to 19.08, but 19.11 is the time where
API/ABI breakage is allowed.
 
> > 2) Why should application care? Is this just a test hook?  
> 
> https://patches.dpdk.org/cover/57623/
> This is from FD.io VPP's bug, and finally, we come out
> this API for application accessing the burst mode information.
> It can be used as a simple trace or something like performance
> analysis like why slow ? Not in vector, anyway, application can
> get this burst mode information now, not just open PMD debug log
> level.

From an architecture perspective, diagnostics are good but VPP is probably
taking that too far.  It is possible to expose local symbols if they
want to keep using dlsym() by adjusting linker flags. It is more that VPP
is stripping everything.  Since VPP has chosen to go their own
way is fixable inside VPP without changing DPDK. Also, long term VPP is
going away from using DPDK drivers. Probably soon they will have their
own drivers for i40e and ice anyway.


The basis of my concern is that this is one of those kind of API's
that creates long term technical debt around supporting it as other
things change.
  
Ferruh Yigit Sept. 26, 2019, 5:36 p.m. UTC | #4
On 9/26/2019 6:15 PM, Stephen Hemminger wrote:
> On Thu, 26 Sep 2019 16:36:09 +0000
> "Wang, Haiyue" <haiyue.wang@intel.com> wrote:
> 
>> Hi Stephen,
>>
>>> -----Original Message-----
>>> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
>>> Sent: Thursday, September 26, 2019 23:57
>>> To: Wang, Haiyue <haiyue.wang@intel.com>
>>> Cc: dev@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>;
>>> Kinsella, Ray <ray.kinsella@intel.com>; Iremonger, Bernard <bernard.iremonger@intel.com>; Sun, Chenmin
>>> <chenmin.sun@intel.com>
>>> Subject: Re: [dpdk-dev] [PATCH v1 0/4] get Rx/Tx packet burst mode information
>>>
>>> On Thu, 26 Sep 2019 19:48:14 +0800
>>> Haiyue Wang <haiyue.wang@intel.com> wrote:
>>>   
>>>> RFCv3 -> v1:
>>>> 	https://patchwork.dpdk.org/patch/59103/
>>>> 	https://patchwork.dpdk.org/patch/59104/
>>>> 	https://patchwork.dpdk.org/patch/59105/
>>>> 	https://patchwork.dpdk.org/patch/59106/
>>>> 	1). Use the function 'rte_bsf64' to iterate the options for
>>>> 	    getting the name.
>>>>
>>>> Haiyue Wang (4):
>>>>   ethdev: add the API for getting burst mode information
>>>>   net/i40e: support to get the Rx/Tx burst mode
>>>>   net/ice: support to get the Rx/Tx burst mode
>>>>   app/testpmd: show the Rx/Tx burst mode description
>>>>
>>>>  app/test-pmd/config.c                    | 29 +++++++++
>>>>  doc/guides/rel_notes/release_19_11.rst   |  9 +++
>>>>  drivers/net/i40e/i40e_ethdev.c           |  2 +
>>>>  drivers/net/i40e/i40e_ethdev.h           |  4 ++
>>>>  drivers/net/i40e/i40e_rxtx.c             | 72 +++++++++++++++++++++
>>>>  drivers/net/ice/ice_ethdev.c             |  2 +
>>>>  drivers/net/ice/ice_rxtx.c               | 54 ++++++++++++++++
>>>>  drivers/net/ice/ice_rxtx.h               |  4 ++
>>>>  lib/librte_ethdev/rte_ethdev.c           | 75 ++++++++++++++++++++++
>>>>  lib/librte_ethdev/rte_ethdev.h           | 82 ++++++++++++++++++++++++
>>>>  lib/librte_ethdev/rte_ethdev_core.h      |  5 ++
>>>>  lib/librte_ethdev/rte_ethdev_version.map |  5 ++
>>>>  12 files changed, 343 insertions(+)
>>>>  
>>>
>>> A couple of meta comments:
>>> 1) Could this be part of dev_info_get somehow?
>>>   
>>
>> https://patchwork.dpdk.org/patch/57624/
>> 'Think of a better way that doesn't break ABI.'  ;-)
> 
> That comment was made relative to 19.08, but 19.11 is the time where
> API/ABI breakage is allowed.

'rte_eth_dev_info_get()' is already a little messy, yes this can be part of it
but I think separate, smaller, better defined APIs are better.
Also almost everybody interested in 'rte_eth_dev_info_get()', but not sure
everyone will be interested in this info.

>  
>>> 2) Why should application care? Is this just a test hook?  
>>
>> https://patches.dpdk.org/cover/57623/
>> This is from FD.io VPP's bug, and finally, we come out
>> this API for application accessing the burst mode information.
>> It can be used as a simple trace or something like performance
>> analysis like why slow ? Not in vector, anyway, application can
>> get this burst mode information now, not just open PMD debug log
>> level.
> 
> From an architecture perspective, diagnostics are good but VPP is probably
> taking that too far.  It is possible to expose local symbols if they
> want to keep using dlsym() by adjusting linker flags. It is more that VPP
> is stripping everything.  Since VPP has chosen to go their own
> way is fixable inside VPP without changing DPDK. Also, long term VPP is
> going away from using DPDK drivers. Probably soon they will have their
> own drivers for i40e and ice anyway.
> 
> 
> The basis of my concern is that this is one of those kind of API's
> that creates long term technical debt around supporting it as other
> things change.
>
  
Wang, Haiyue Sept. 27, 2019, 1:17 a.m. UTC | #5
> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Friday, September 27, 2019 01:15
> To: Wang, Haiyue <haiyue.wang@intel.com>
> Cc: dev@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>;
> Kinsella, Ray <ray.kinsella@intel.com>; Iremonger, Bernard <bernard.iremonger@intel.com>; Sun, Chenmin
> <chenmin.sun@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v1 0/4] get Rx/Tx packet burst mode information
> 
> On Thu, 26 Sep 2019 16:36:09 +0000
> "Wang, Haiyue" <haiyue.wang@intel.com> wrote:
> 
> > Hi Stephen,
> >
> > > -----Original Message-----
> > > From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> > > Sent: Thursday, September 26, 2019 23:57
> > > To: Wang, Haiyue <haiyue.wang@intel.com>
> > > Cc: dev@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>; Ye, Xiaolong <xiaolong.ye@intel.com>;
> > > Kinsella, Ray <ray.kinsella@intel.com>; Iremonger, Bernard <bernard.iremonger@intel.com>; Sun,
> Chenmin
> > > <chenmin.sun@intel.com>
> > > Subject: Re: [dpdk-dev] [PATCH v1 0/4] get Rx/Tx packet burst mode information
> > >
> > > On Thu, 26 Sep 2019 19:48:14 +0800
> > > Haiyue Wang <haiyue.wang@intel.com> wrote:
> > >
> > > > RFCv3 -> v1:
> > > > 	https://patchwork.dpdk.org/patch/59103/
> > > > 	https://patchwork.dpdk.org/patch/59104/
> > > > 	https://patchwork.dpdk.org/patch/59105/
> > > > 	https://patchwork.dpdk.org/patch/59106/
> > > > 	1). Use the function 'rte_bsf64' to iterate the options for
> > > > 	    getting the name.
> > > >
> > > > Haiyue Wang (4):
> > > >   ethdev: add the API for getting burst mode information
> > > >   net/i40e: support to get the Rx/Tx burst mode
> > > >   net/ice: support to get the Rx/Tx burst mode
> > > >   app/testpmd: show the Rx/Tx burst mode description
> > > >
> > > >  app/test-pmd/config.c                    | 29 +++++++++
> > > >  doc/guides/rel_notes/release_19_11.rst   |  9 +++
> > > >  drivers/net/i40e/i40e_ethdev.c           |  2 +
> > > >  drivers/net/i40e/i40e_ethdev.h           |  4 ++
> > > >  drivers/net/i40e/i40e_rxtx.c             | 72 +++++++++++++++++++++
> > > >  drivers/net/ice/ice_ethdev.c             |  2 +
> > > >  drivers/net/ice/ice_rxtx.c               | 54 ++++++++++++++++
> > > >  drivers/net/ice/ice_rxtx.h               |  4 ++
> > > >  lib/librte_ethdev/rte_ethdev.c           | 75 ++++++++++++++++++++++
> > > >  lib/librte_ethdev/rte_ethdev.h           | 82 ++++++++++++++++++++++++
> > > >  lib/librte_ethdev/rte_ethdev_core.h      |  5 ++
> > > >  lib/librte_ethdev/rte_ethdev_version.map |  5 ++
> > > >  12 files changed, 343 insertions(+)
> > > >
> > >
> > > A couple of meta comments:
> > > 1) Could this be part of dev_info_get somehow?
> > >
> >
> > https://patchwork.dpdk.org/patch/57624/
> > 'Think of a better way that doesn't break ABI.'  ;-)
> 
> That comment was made relative to 19.08, but 19.11 is the time where
> API/ABI breakage is allowed.
> 

Since 'rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info)'
focuses on 'port' level, the new rx/tx_burst_mode API can support 'queue' level:
'rte_eth_tx_burst_mode_get(uint16_t port_id, uint16_t queue_id ...', in other
words, PMD can optimize their queues in Vector/Scalar/... modes for each queue,
not have to just one mode for all queues at the same time, this API can return
"Per Queue" information.

> > > 2) Why should application care? Is this just a test hook?
> >
> > https://patches.dpdk.org/cover/57623/
> > This is from FD.io VPP's bug, and finally, we come out
> > this API for application accessing the burst mode information.
> > It can be used as a simple trace or something like performance
> > analysis like why slow ? Not in vector, anyway, application can
> > get this burst mode information now, not just open PMD debug log
> > level.
> 
> From an architecture perspective, diagnostics are good but VPP is probably
> taking that too far.  It is possible to expose local symbols if they
> want to keep using dlsym() by adjusting linker flags. It is more that VPP
> is stripping everything.  Since VPP has chosen to go their own
> way is fixable inside VPP without changing DPDK. Also, long term VPP is
> going away from using DPDK drivers. Probably soon they will have their
> own drivers for i40e and ice anyway.
> 
> 
> The basis of my concern is that this is one of those kind of API's
> that creates long term technical debt around supporting it as other
> things change.

At first, we use 'string format' to make VPP happy, now, we use bit-fields
for general use.

People come, people go, even VPP left DPDK, now, testpmd is the first
user, and I think it is good for 'test' the PMD with friendly information:

testpmd> show rxq info 0 0

********************* Infos for port 0 , RX queue 0  *********************
Mempool: mbuf_pool_socket_0
RX prefetch threshold: 0
RX host threshold: 0
RX writeback threshold: 0
RX free threshold: 32
RX drop packets: off
RX deferred start: off
RX scattered packets: off
Number of RXDs: 1024
Burst mode: Vector AVX2       =============> direct information, not have to check the
                                             code and open debug to make sure every setting
							   is right.

testpmd> show txq info 0 0

********************* Infos for port 0 , TX queue 0  *********************
TX prefetch threshold: 32
TX host threshold: 0
TX writeback threshold: 0
TX RS threshold: 32
TX free threshold: 32
TX deferred start: off
Number of TXDs: 1024
Burst mode: Vector AVX2      =============>