[dpdk-dev] Multi-process on the same host

Stephen Hemminger stephen at networkplumber.org
Fri Oct 4 18:38:52 CEST 2013


On Fri, 4 Oct 2013 13:47:02 +0200
Walter de Donato <walter.dedonato at unina.it> wrote:

> Hello,
> 
> I've been using DPDK for a while and now I encountered the following issue:
> when I try to run two primary processes on the same host (with --no-shconf
> option enabled) respectively sending packets on one port and receiving them
> on a different port (the two ports are directly connected with a CAT-6
> cable), I get this error on the receiving process:
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000004158a0 in rte_eth_rx_burst (port_id=0 '\000', queue_id=0,
> rx_pkts=0x7ffff5baa8f0, nb_pkts=128) at
> /home/devel/dpdk/build/include/rte_ethdev.h:1658
> 1658            return (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id],
> rx_pkts, nb_pkts);
> 
> To give some more details:
> - the options given to the two processes:
>   ./receiver -c 0x3 -n 2 -m 200 --no-shconf -- -p 0x1
>   ./sender -c 0xc -n 2 -m 200 --no-shconf -- -p 0x2
>   where the -p option is the binary mask to select the ports to enable.
> - the network card is a dualport Intel X540:
>   port 0: Intel Corporation Ethernet Controller 10 Gigabit X540-AT2 (rev 01)
>   port 1: Intel Corporation Ethernet Controller 10 Gigabit X540-AT2 (rev 01)
> - this is the hugeadm --pool-list output:
>       Size  Minimum  Current  Maximum  Default
>   1073741824        2        2        2        *
> 
> My first question is: should it be possible to let separate primary
> processes coexist if they use different resources (cores, ports, memory
> pools)?
> 
> A second question is: there is any other workaround to let this scenario
> work without merging the two processes into two lcores of the same process?
> 
> Thanks in advance,
> -Walter

The problem is that huge TLB filesystem is a shared resource.
Because of that the memory pools of the two processes overlap, and memory pools
are used for packet buffers, malloc, etc.

You might be able to use no-huge, but then other things would probably break.


More information about the dev mailing list