> -----Original Message----- > From: Wang, Haiyue > Sent: Sunday, November 3, 2019 10:34 > To: Slava Ovsiienko <viachesl...@mellanox.com>; Liu, Yu Y > <yu.y....@intel.com>; Thomas Monjalon > <tho...@monjalon.net> > Cc: dev@dpdk.org; arybche...@solarflare.com; Yigit, Ferruh > <ferruh.yi...@intel.com>; > jerinjac...@gmail.com; Ye, Xiaolong <xiaolong...@intel.com>; Kinsella, Ray > <ray.kinse...@intel.com>; > Sun, Chenmin <chenmin....@intel.com>; Damjan Marion (damarion) > <damar...@cisco.com> > Subject: RE: [PATCH v1 3/3] ethdev: enhance the API for getting burst mode > information > > Hi Thomas, Slava, > > Please see the inline reply in one place. > > > -----Original Message----- > > From: Slava Ovsiienko <viachesl...@mellanox.com> > > Sent: Saturday, November 2, 2019 16:39 > > To: Liu, Yu Y <yu.y....@intel.com>; Wang, Haiyue <haiyue.w...@intel.com>; > > Thomas Monjalon > > <tho...@monjalon.net> > > Cc: dev@dpdk.org; arybche...@solarflare.com; Yigit, Ferruh > > <ferruh.yi...@intel.com>; > > jerinjac...@gmail.com; Ye, Xiaolong <xiaolong...@intel.com>; Kinsella, Ray > > <ray.kinse...@intel.com>; > > Sun, Chenmin <chenmin....@intel.com>; Damjan Marion (damarion) > > <damar...@cisco.com> > > Subject: RE: [PATCH v1 3/3] ethdev: enhance the API for getting burst mode > > information > > > > Hi > > > -----Original Message----- > > > From: Liu, Yu Y <yu.y....@intel.com> > > > Sent: Saturday, November 2, 2019 8:56 > > > To: Wang, Haiyue <haiyue.w...@intel.com>; Thomas Monjalon > > > <tho...@monjalon.net> > > > Cc: dev@dpdk.org; arybche...@solarflare.com; Yigit, Ferruh > > > <ferruh.yi...@intel.com>; jerinjac...@gmail.com; Ye, Xiaolong > > > <xiaolong...@intel.com>; Kinsella, Ray <ray.kinse...@intel.com>; Sun, > > > Chenmin <chenmin....@intel.com>; Slava Ovsiienko > > > <viachesl...@mellanox.com>; Damjan Marion (damarion) > > > <damar...@cisco.com>; Liu, Yu Y <yu.y....@intel.com> > > > Subject: RE: [PATCH v1 3/3] ethdev: enhance the API for getting burst mode > > > information > > > > > > Add Damjan from FD.io for awareness... > > > > > > Hi Thomas, > > > > > > Long time no see. Sorry I use outlook which is not friendly to community > > > email. > > > > > > >Anyway I will propose to replace this API in the next release. > > > Will your plan be affected by API/ABI stable plan? > > > BTW, if you propose new change in next release, it will make DPDK > > > consumer(FD.io) to change again. > > > So even if it is not affected to the API/ABI stable plan, do we still > > > have time > > > to get a solution for everyone in DPDK 19.11 with your > > > contribution/acceleration? > > > > > > > I suspect a real hidden issue in Intel CPUs that you try to mitigate. > > > Please be rest assured it is not the case. > > > This request is just from one FD.io project internal bug " tx/rx burst > > > function > > > is shown as nil" reported by Chenmin. > > > > Why just the presenting string with function name (possible with suffix) is > > not enough? > > I would like to see this API (strings approach) in mlx5 either, dropping > > the entire feature > > does not look nice, as for me. > > > > We could consider some requirements for the name suffices to distinguish > > whether > > function uses vector instructions and which ones if any. > > > > > My understanding is DPDK behavior was taken as bug for someone in FD.io > > > project and potentially will mislead other DPDK consumer. > > > > Why does FD.io code want to know which vector extension is used by burst > > routines? > > Is it going to share/preserve some resources (registers, etc.)? Is it > > robust ? > > Burst routines might not know whether vector extensions is used (they might > > call > > libraries, even rte_memcpy() can use vectors in implicit fashion). > > > > 1. > > The original issue description is: > "VPP uses dladdr() to translate a function address to name, however, some > tx/rx functions > in DPDK are invisible for dladdr(), which is because they are defined as > static." > > 2. > > So the RFC design is: one function, one description, like: > https://patchwork.dpdk.org/patch/57644/ > > +#ifdef RTE_ARCH_X86 > + else if (dev->rx_pkt_burst == ice_recv_scattered_pkts_vec_avx2) > + len = snprintf(buf, sz, "AVX2 Vector Scattered Rx"); > + else if (dev->rx_pkt_burst == ice_recv_scattered_pkts_vec) > + len = snprintf(buf, sz, "Vector Scattered Rx"); > + else if (dev->rx_pkt_burst == ice_recv_pkts_vec_avx2) > + len = snprintf(buf, sz, "AVX2 Vector Rx"); > + else if (dev->rx_pkt_burst == ice_recv_pkts_vec) > + len = snprintf(buf, sz, "Vector Rx"); > +#endif > > 3. Since the main issue is as Damjan replied in another thread: > "people are reporting lower performance caused by DPDK deciding for variety > of reasons to switch from vector PMD to scalar one." > > And Ferruh replied also: > "As I understand this is to let applications to give informed decision > based > on what vectorization is used in the driver, currently this is not known > by > the application. > > And as previously replied, the main target of the API is to define the > vector > path, not all optimizations, so the number is limited." > > So we enhanced it with bit, example detail is (Yes, we defined a lit > more, > so we removed it in this patch): > https://patchwork.dpdk.org/patch/61196/ > > 4. And thanks Jerin's suggestion, I think his word can be more accurate: > "This would > help to reuse some of the flags to name conversion logic across all PMDs" > for the > reason we try to use bit to reduce some string format effort, it will be > handled > by the API internally "burst_mode_options_append(struct rte_eth_burst_mode > *mode)". > Now the new API will return the string finally: > > #define RTE_ETH_BURST_MODE_ALT_OPT_SIZE 1024 > struct rte_eth_burst_mode { > uint64_t options; > > /**< Each PMD can fill specific burst mode information into this, and > * ethdev APIs will append the 'options' string format at its end. > */ > char alternate_options[RTE_ETH_BURST_MODE_ALT_OPT_SIZE]; > }; > > So MLX PMD can add 'full_empw', 'mtsc_empw' etc into 'alternate_options' > firstly, assign > 'RTE_ETH_BURST_VECTOR | RTE_ETH_BURST_SSE' to 'options' as needed, then > finally, > 'alternate_options' will be "full_empw, Vector SSE". > > Intel PMD can just assign "options", then finally, 'alternate_options' will > be "Vector SSE". > > How about the design idea ? Again, this 'options' is not to do > standardization, just > want to reduce the duplicated name string things. >
Also, one more thing about 'RTE_ETH_BURST_PER_QUEUE', I added new comment to make it be more understandable, how about this ? /**< If the Rx/Tx queues have different burst mode description, then PMD return * this bit, so the application can enumerate all queues burst mode description * as needed. */ #define RTE_ETH_BURST_PER_QUEUE (1ULL << 63) so that, application can know more about PMD's burst information: rte_eth_rx_burst_mode_get(port_id, 0, &mode); /* Use queue Id #0 to get burst mode firstly*/ if (mode.options & RTE_ETH_BURST_PER_QUEUE) loop other queues. > > With best regards, Slava > > > > > Haiyue is working with Chenmin to address the issue and with your support > > > it > > > will be even better. > > > > > > Your support will be highly appreciated! > > > > > > Thanks & Regards, > > > Yu Liu > > > > > > -----Original Message----- > > > From: dev <dev-boun...@dpdk.org> On Behalf Of Wang, Haiyue > > > Sent: Saturday, November 2, 2019 1:30 PM > > > To: Thomas Monjalon <tho...@monjalon.net> > > > Cc: dev@dpdk.org; arybche...@solarflare.com; Yigit, Ferruh > > > <ferruh.yi...@intel.com>; jerinjac...@gmail.com; Ye, Xiaolong > > > <xiaolong...@intel.com>; Kinsella, Ray <ray.kinse...@intel.com>; Sun, > > > Chenmin <chenmin....@intel.com>; Slava Ovsiienko > > > <viachesl...@mellanox.com> > > > Subject: Re: [dpdk-dev] [PATCH v1 3/3] ethdev: enhance the API for getting > > > burst mode information > > > > > > > -----Original Message----- > > > > From: Thomas Monjalon <tho...@monjalon.net> > > > > Sent: Saturday, November 2, 2019 06:46 > > > > To: Wang, Haiyue <haiyue.w...@intel.com> > > > > Cc: dev@dpdk.org; arybche...@solarflare.com; Yigit, Ferruh > > > > <ferruh.yi...@intel.com>; jerinjac...@gmail.com; Ye, Xiaolong > > > > <xiaolong...@intel.com>; Kinsella, Ray <ray.kinse...@intel.com>; Sun, > > > > Chenmin <chenmin....@intel.com>; Slava Ovsiienko > > > > <viachesl...@mellanox.com> > > > > Subject: Re: [PATCH v1 3/3] ethdev: enhance the API for getting burst > > > > mode information > > > > > > > > Thank you for trying to address comments done late. > > > > > > > > 31/10/2019 18:11, Haiyue Wang: > > > > > --- a/lib/librte_ethdev/rte_ethdev.h > > > > > +++ b/lib/librte_ethdev/rte_ethdev.h > > > > > > > > > > > +#define RTE_ETH_BURST_ALTIVEC (1ULL << 2) > > > > > +#define RTE_ETH_BURST_NEON (1ULL << 3) > > > > > +#define RTE_ETH_BURST_SSE (1ULL << 4) > > > > > +#define RTE_ETH_BURST_AVX2 (1ULL << 5) > > > > > +#define RTE_ETH_BURST_AVX512 (1ULL << 6) > > > > > > > > Of course, I still believe that giving a special treatment to vector > > > > instructions is wrong. > > > > You did not justify why it needs to be defined in bits instead of > > > > string. I am not asking again because anyway you don't really reply. I > > > > think you are executing an order you received and I don't want to > > > > blame you more. > > > > I suspect a real hidden issue in Intel CPUs that you try to mitigate. > > > > No need to reply to this comment. > > > > Anyway I will propose to replace this API in the next release. > > > > > > Never mind, if this design is truly ugly, drop it all now. I also prefer > > > to do the > > > best, that's why open source is amazing, thanks! ;-)