21/11/2019 22:25, Thomas Monjalon:
> 21/11/2019 16:12, David Marchand:
> > Following [1], testpmd memory consumption has skyrocketted.
> > The rte_port structure has gotten quite fat.
> > 
> > struct rte_port {
> > [...]
> >   struct rte_eth_rxconf rx_conf[65536];            /* 266280 3145728 */
> >   /* --- cacheline 53312 boundary (3411968 bytes) was 40 bytes ago --- */
> >   struct rte_eth_txconf tx_conf[65536];            /* 3412008 3670016 */
> >   /* --- cacheline 110656 boundary (7081984 bytes) was 40 bytes ago --- */
> > [...]
> >   /* size: 8654936, cachelines: 135234, members: 31 */
> > [...]
> > 
> > testpmd handles RTE_MAX_ETHPORTS ports (32 by default) which means that it
> > needs ~256MB just for this internal representation.
> > 
> > The reason is that a testpmd rte_port (the name is quite confusing, as
> > it is a local type) maintains configurations for all queues of a port.
> > But where you would expect testpmd to use RTE_MAX_QUEUES_PER_PORT as the
> > maximum queue count, the rte_port uses MAX_QUEUE_ID set to 64k.
> > 
> > Prefer the ethdev maximum value.
> > 
> > After this patch:
> > struct rte_port {
> > [...]
> >   struct rte_eth_rxconf      rx_conf[1025];        /*  8240 49200 */
> >   /* --- cacheline 897 boundary (57408 bytes) was 32 bytes ago --- */
> >   struct rte_eth_txconf      tx_conf[1025];        /* 57440 57400 */
> >   /* --- cacheline 1794 boundary (114816 bytes) was 24 bytes ago --- */
> > [...]
> >   /* size: 139488, cachelines: 2180, members: 31 */
> > [...]
> > 
> > [1]: https://git.dpdk.org/dpdk/commit/?id=436b3a6b6e62
> > 
> > Signed-off-by: David Marchand <david.march...@redhat.com>
> 
> Acked-by: Thomas Monjalon <tho...@monjalon.net>
> 
> I was really concerned by the memory requirement increase
> due to my patch on ethdev structs.
> Thank you for finding these giant arrays.

After testing this patch, I realized that you can decrease
the memory requirement of test-null.sh from 150 (300 in patch [1])
to only 20 MB.

The following patch [1] was workarounding the big memory requirement
by increasing the allocated memory to 300 MB.
[1] https://patches.dpdk.org/patch/63151/


Reply via email to