From b1b7bebdc7d83287e26655e1d6e8892ddab5e2a3 Mon Sep 17 00:00:00 2001 From: GangCao Date: Mon, 6 Jun 2016 18:55:21 -0400 Subject: [PATCH] nvmf: double tx_desc_pool count with doubled cq_depth per connection Change-Id: I7139ddfacedc1ee7f324a1577730b08260035b83 Signed-off-by: GangCao --- lib/nvmf/framework.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/nvmf/framework.c b/lib/nvmf/framework.c index 24188253a..a0ab44ddb 100644 --- a/lib/nvmf/framework.c +++ b/lib/nvmf/framework.c @@ -62,6 +62,9 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF) * * SPDK_NVMF_DESC_POOL_SIZE: The total number of RDMA descriptors * needed for all possible admin and I/O queue requests. + * + * SPDK_NVMF_TX_DESC_POOL_SIZE: The total number of RDMA descriptors + * needed for all possible admin and I/O queue tx requests. */ #define SPDK_NVMF_ADMINQ_POOL_SIZE(spdk) (MAX_SUBSYSTEMS * \ (spdk->MaxSessionsPerSubsystem) * \ @@ -75,6 +78,10 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF) #define SPDK_NVMF_DESC_POOL_SIZE(spdk) (SPDK_NVMF_ADMINQ_POOL_SIZE(spdk) + \ SPDK_NVMF_IOQ_POOL_SIZE(spdk)) +/* Per each connection, cq depth is double of sq depth. Double the memory accordingly. */ +#define SPDK_NVMF_TX_DESC_POOL_SIZE(spdk) ((SPDK_NVMF_ADMINQ_POOL_SIZE(spdk) + \ + SPDK_NVMF_IOQ_POOL_SIZE(spdk)) * 2) + #define SPDK_NVMF_MAX_CONNECTIONS(spdk) (MAX_SUBSYSTEMS * \ ((spdk)->MaxSessionsPerSubsystem) * \ ((spdk)->MaxConnectionsPerSession)) @@ -152,7 +159,7 @@ spdk_nvmf_initialize_pools(struct spdk_nvmf_globals *spdk_nvmf) spdk_nvmf->tx_desc_pool = rte_mempool_create("RDMA TX Desc Pool", - SPDK_NVMF_DESC_POOL_SIZE(spdk_nvmf), + SPDK_NVMF_TX_DESC_POOL_SIZE(spdk_nvmf), sizeof(struct nvme_qp_tx_desc), 0, 0, NULL, NULL, NULL, NULL, @@ -163,7 +170,7 @@ spdk_nvmf_initialize_pools(struct spdk_nvmf_globals *spdk_nvmf) } SPDK_TRACELOG(SPDK_TRACE_DEBUG, "RDMA Tx descriptor pool %p, size 0x%lx bytes\n", spdk_nvmf->tx_desc_pool, - (SPDK_NVMF_DESC_POOL_SIZE(spdk_nvmf) * sizeof(struct nvme_qp_tx_desc))); + (SPDK_NVMF_TX_DESC_POOL_SIZE(spdk_nvmf) * sizeof(struct nvme_qp_tx_desc))); return 0; } @@ -186,7 +193,7 @@ spdk_nvmf_check_pools(struct spdk_nvmf_globals *spdk_nvmf) rc += spdk_nvmf_check_pool(spdk_nvmf->nvme_request_pool, SPDK_NVMF_DESC_POOL_SIZE(spdk_nvmf)); rc += spdk_nvmf_check_pool(spdk_nvmf->rx_desc_pool, SPDK_NVMF_DESC_POOL_SIZE(spdk_nvmf)); - rc += spdk_nvmf_check_pool(spdk_nvmf->tx_desc_pool, SPDK_NVMF_DESC_POOL_SIZE(spdk_nvmf)); + rc += spdk_nvmf_check_pool(spdk_nvmf->tx_desc_pool, SPDK_NVMF_TX_DESC_POOL_SIZE(spdk_nvmf)); rc += spdk_nvmf_check_pool(spdk_nvmf->bb_small_pool, SPDK_NVMF_ADMINQ_POOL_SIZE(spdk_nvmf)); rc += spdk_nvmf_check_pool(spdk_nvmf->bb_large_pool, SPDK_NVMF_IOQ_POOL_SIZE(spdk_nvmf));