diff --git a/input/dpdk.h b/input/dpdk.h index c6987cd29..d8d297520 100644 --- a/input/dpdk.h +++ b/input/dpdk.h @@ -46,7 +46,7 @@ namespace ipxp { class DpdkOptParser : public OptionsParser { private: static constexpr size_t DEFAULT_MBUF_BURST_SIZE = 64; - static constexpr size_t DEFAULT_MBUF_POOL_SIZE = 4096; + static constexpr size_t DEFAULT_MBUF_POOL_SIZE = 8192; size_t pkt_buffer_size_; size_t pkt_mempool_size_; std::vector port_numbers_; diff --git a/input/dpdk/dpdkDevice.cpp b/input/dpdk/dpdkDevice.cpp index cf3a6df5b..24dde1474 100644 --- a/input/dpdk/dpdkDevice.cpp +++ b/input/dpdk/dpdkDevice.cpp @@ -25,6 +25,7 @@ #include "dpdkDevice.hpp" +#include #include #include #include @@ -192,11 +193,13 @@ void DpdkDevice::initMemPools(uint16_t memPoolSize) void DpdkDevice::setupRxQueues(uint16_t memPoolSize) { + const uint16_t rxQueueSize = std::max(memPoolSize / 2, 1); + for (uint16_t rxQueueID = 0; rxQueueID < m_rxQueueCount; rxQueueID++) { int ret = rte_eth_rx_queue_setup( m_portID, rxQueueID, - memPoolSize, + rxQueueSize, rte_eth_dev_socket_id(m_portID), nullptr, m_memPools[rxQueueID]); @@ -206,6 +209,9 @@ void DpdkDevice::setupRxQueues(uint16_t memPoolSize) + std::to_string(m_portID)); } } + + std::cerr << "DPDK RX queues for port " << m_portID << " set up. Size of each queue: " + << rxQueueSize << std::endl; } void DpdkDevice::configureRSS()