<div dir="ltr"><div>Hello</div><div><br></div><div>Stephen, thanks for your answer.</div><div><br></div><div>>Which of the rte_eth_xxx functions are you asking about?</div><div><span class="gmail-im"><br></span></div><div><span class="gmail-im">I wonder if the following rte_eth_xxx functions can be used in secondary processes:<br></span></div><div>rte_eth_rx_burst</div><div>rte_eth_tx_burst</div><div>rte_eth_stats_reset</div><div>rte_eth_xstats_get</div><div>rte_eth_rx_queue_setup</div><div>rte_eth_tx_queue_setup</div><div>rte_eth_macaddr_getueue_setup</div><div>rte_eth_dev_set_mtu</div><div>rte_eth_dev_rx_queue_stop</div><div>rte_eth_dev_tx_queue_stop</div><div>rte_eth_dev_info_get</div><div>rte_eth_dev_get_name_by_port</div><div>rte_eth_dev_start</div><div>rte_eth_dev_socket_id</div><div>rte_eth_dev_configure</div><div>rte_eth_dev_count_avail</div><div><br></div><div><br></div><div>I also would like to ask if a secondary process can create and free memory pools using for example the following functions:</div><div>rte_pktmbuf_pool_create</div><div>rte_mempool_create</div><div>rte_mempool_create_empty</div><div>rte_mempool_set_ops_byname</div><div>rte_mempool_populate_default</div><div>rte_mempool_free</div><div><br></div><div>The applications I would like to use for shared memory using the DPDK multi-process use these rte_eth_xxx and rte memory pool functions for handling</div><div>Ethernet devices and memory pools so I wonder if these applications need to be modified in order to be used as secondary processes.</div><div><br></div><div>The NICs I plan to use are Intel 700 series (XL710 40GbE, XXV710 25 GbE) and Mellanox ConnectX-4 Lx 25GbE, ConnectX-5 100 GbE and ConnectX-6 100 GbE.<br></div><div>Can these be used from both the primary and the secondary processes?<br></div><div><br></div><div>Regards<br></div><div>Staffan<br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Den fre 26 nov. 2021 kl 18:22 skrev Stephen Hemminger <<a href="mailto:stephen@networkplumber.org">stephen@networkplumber.org</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, 26 Nov 2021 13:27:40 +0100<br>
Staffan Wiklund <<a href="mailto:staffan491@gmail.com" target="_blank">staffan491@gmail.com</a>> wrote:<br>
<br>
> Hello<br>
> <br>
> I wonder if you please can help me with some questions regarding the DPDK<br>
> multi-process feature?<br>
> <br>
> If a primary process and the secondary processes all execute on different<br>
> CPU cores,<br>
> what limitations are there on the secondary processes when using DPDK<br>
> functions<br>
> for initialization of EAL and for handling ethernet devices?<br>
> <br>
> That is, is a secondary process allowed to call the rte_eal_init function<br>
> or any of<br>
> the rte_eth_xxx functions?<br>
<br>
<br>
Secondary process has to call rte_eal_init() with secondary (or auto flag).<br>
Which of the rte_eth_xxx functions are you asking about?<br>
<br>
> What will happen if a secondary process calls any of these DPDK functions?<br>
> <br>
> The reason for these questions is that I would like to execute 3-4 DPDK<br>
> applications that<br>
> now executes as stand-alone applications as one primary process and the<br>
> other<br>
> applications as secondary processes. All these processes will share memory<br>
> which<br>
> shall be used to improve the speed of communication between the<br>
> applications.<br>
<br>
Several applications do this.<br>
<br>
> The applications currently use DPDK for Ethernet based communication and I<br>
> would<br>
> like to learn what needs to be modified in order to be able to execute them<br>
> as a<br>
> primary and secondary processes using DPDK shared memory.<br>
> <br>
> Best regards<br>
> Staffan<br>
<br>
To be honest, my experience is that not all functions work on all drivers<br>
with the multi-process model. The documentation mostly covers the ones that<br>
don't but you have to be careful and test with particular drivers and use cases.<br>
</blockquote></div>