From: Damjan Marion Date: Sun, 26 Jun 2016 18:16:57 +0000 (+0200) Subject: Reduce ring size for dpdk NICs and overtal mem footprint X-Git-Tag: v16.09-rc1~232 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=a06dfb39c6bee3fbfd702c10e1e1416b98e65455;p=vpp.git Reduce ring size for dpdk NICs and overtal mem footprint Size of interface descriptor rings have direct impact on Last Level Cache utilization, and can significantly affect performance. So generally having smaller ring size is good idea as long as there is enough buffer in the ring to accomodate line rate. Here we are reducing rings sizes to 1024 which is still bigger than lab verified 512 buffers per ring. Indirectly, this also affects memory footprint, as we can have smaller buffer allocation, which is now 16384 (previously it was 32768) This patch also fixes issue with i40e vector PMD which was leaking buffers when previous default ring sizes were set. Change-Id: I58fb40586304b2f0cb5de9a444055da3cd3acb53 Signed-off-by: Damjan Marion --- diff --git a/vnet/vnet/devices/dpdk/dpdk.h b/vnet/vnet/devices/dpdk/dpdk.h index 6d4ded19879..1c3d0bb860f 100644 --- a/vnet/vnet/devices/dpdk/dpdk.h +++ b/vnet/vnet/devices/dpdk/dpdk.h @@ -63,7 +63,7 @@ #include -#define NB_MBUF (32<<10) +#define NB_MBUF (16<<10) extern vnet_device_class_t dpdk_device_class; extern vlib_node_registration_t dpdk_input_node; diff --git a/vnet/vnet/devices/dpdk/dpdk_priv.h b/vnet/vnet/devices/dpdk/dpdk_priv.h index c202d85b590..24c91c6a9ca 100644 --- a/vnet/vnet/devices/dpdk/dpdk_priv.h +++ b/vnet/vnet/devices/dpdk/dpdk_priv.h @@ -17,11 +17,11 @@ #define DPDK_NB_TX_DESC_DEFAULT 512 #define DPDK_NB_RX_DESC_VIRTIO 256 #define DPDK_NB_TX_DESC_VIRTIO 256 -#define DPDK_NB_RX_DESC_10GE 2048 -#define DPDK_NB_TX_DESC_10GE 2048 -#define DPDK_NB_RX_DESC_40GE (4096-128) -#define DPDK_NB_TX_DESC_40GE 2048 -#define DPDK_NB_RX_DESC_ENIC (4096+1024) +#define DPDK_NB_RX_DESC_10GE 1024 +#define DPDK_NB_TX_DESC_10GE 1024 +#define DPDK_NB_RX_DESC_40GE 1024 +#define DPDK_NB_TX_DESC_40GE 1024 +#define DPDK_NB_RX_DESC_ENIC 1024 /* These args appear by themselves */ #define foreach_eal_double_hyphen_predicate_arg \ diff --git a/vnet/vnet/devices/dpdk/init.c b/vnet/vnet/devices/dpdk/init.c index 2ae39222e34..1f739494dd1 100644 --- a/vnet/vnet/devices/dpdk/init.c +++ b/vnet/vnet/devices/dpdk/init.c @@ -1147,7 +1147,7 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input) clib_bitmap_foreach (c, tm->cpu_socket_bitmap, ( { vec_validate(mem_by_socket, c); - mem_by_socket[c] = 512; /* default per-socket mem */ + mem_by_socket[c] = 256; /* default per-socket mem */ } )); }