[ovs-dev] mbuf pool sizing

Venkatesan Pradeep venkatesan.pradeep at ericsson.com
Wed Jan 17 19:48:31 UTC 2018


Hi,

Assuming that all ports use the same MTU,  in OVS2.8 and earlier, a single mempool of 256K buffers (MAX_NB_MBUF = 4096 * 64) will be created and shared by all the ports

With the OVS2.9 mempool patches, we have port specific allocation and the number of mbufs created for each port is based on the following formula (with a lower limit of MIN_NB_MBUF = 4096*4)
       n_mbufs = dev->requested_n_rxq * dev->requested_rxq_size
              + dev->requested_n_txq * dev->requested_txq_size
              + MIN(RTE_MAX_LCORE, dev->requested_n_rxq) * NETDEV_MAX_BURST
              + MIN_NB_MBUF;

Using minimal value (1) for n_rxq and n_rxq and default value (2048) for requested_rxq_size and requested_txq_size, the above translates to
      n_mbufs = 1*2048 + 1*2048 + 1*32 + 4096*4  = 20512

Assuming all ports have the same MTU, this means that approximately 13 ports in OVS2.9 will consume as much memory as the single mempool shared by all ports in OVS2.8 (256*1024 / 20512) .

When a node is upgraded from OVS2.8 to OVS2.9 it is quite possible that the memory set aside for OVS may be insufficient. I'm not sure if this aspect has been discussed previously and wanted to bring this up for discussion.

Regards,

Pradeep




More information about the dev mailing list