[ovs-dev] [Patch] Fixes DPDK Queue size for IVSHMEM VM communications

Polehn, Mike A mike.a.polehn at intel.com
Fri Aug 15 14:03:44 UTC 2014


Separates loop list process size from the endpoint DPDK queue size.
Corrected DPDK queue size to be a power of 2 which allows dpdkr interface to be created.
Increased queue size to improve zero loss data rate.
Changed NIC queue size comment to make NIC queue size formula more clear.

Signed-off-by: Mike A. Polehn <mike.a.polehn at intel.com>

diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
old mode 100644
new mode 100755
index 6ee9803..3a19db0
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -71,8 +71,11 @@ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 20);
 
 #define NON_PMD_THREAD_TX_QUEUE 0
 
-#define NIC_PORT_RX_Q_SIZE 2048  /* Size of Physical NIC RX Queue, Max (n+32<=4096)*/
-#define NIC_PORT_TX_Q_SIZE 2048  /* Size of Physical NIC TX Queue, Max (n+32<=4096)*/
+#define NIC_PORT_RX_Q_SIZE 2048  /* Size of Physical NIC RX Queue, Size: (x*32<=4064)*/
+#define NIC_PORT_TX_Q_SIZE 2048  /* Size of Physical NIC TX Queue, Size: (x*32<=4064)*/
+
+#define DPDK_RX_Q_SIZE     2048  /* Size of DPDK RX Client Queue, Size: (x**2)*/
+#define DPDK_TX_Q_SIZE     2048  /* Size of DPDK TX Client Queue, Size: (x**2)*/
 
 /* XXX: Needs per NIC value for these constants. */
 #define RX_PTHRESH 32 /* Default values of RX prefetch threshold reg. */
@@ -1236,7 +1239,7 @@ dpdk_ring_create(const char dev_name[], unsigned int port_no,
         return -err;
     }
 
-    ivshmem->cring_tx = rte_ring_create(ring_name, MAX_RX_QUEUE_LEN, SOCKET0, 0);
+    ivshmem->cring_tx = rte_ring_create(ring_name, DPDK_TX_Q_SIZE, SOCKET0, 0);
     if (ivshmem->cring_tx == NULL) {
         rte_free(ivshmem);
         return ENOMEM;
@@ -1247,7 +1250,7 @@ dpdk_ring_create(const char dev_name[], unsigned int port_no,
         return -err;
     }
 
-    ivshmem->cring_rx = rte_ring_create(ring_name, MAX_RX_QUEUE_LEN, SOCKET0, 0);
+    ivshmem->cring_rx = rte_ring_create(ring_name, DPDK_RX_Q_SIZE, SOCKET0, 0);
     if (ivshmem->cring_rx == NULL) {
         rte_free(ivshmem);
         return ENOMEM;



More information about the dev mailing list