From 4c771a2a498204699ef8e91498214a9814422ee3 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Tue, 5 Jun 2012 15:28:18 -0700 Subject: [PATCH] rsocket: Use configuration files to specify default settings Give an administrator control over the default settings used by rsockets. Use files under %sysconfig%/rdma/rsocket as shown: mem_default - default size of receive buffer(s) wmem_default - default size of send buffer(s) sqsize_default - default size of send queue rqsize_default - default size of receive queue inline_default - default size of inline data If configuration files are not available, rsockets will continue to use internal defaults. Signed-off-by: Sean Hefty --- src/rsocket.c | 51 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/src/rsocket.c b/src/rsocket.c index 76924986..a3c2c6ac 100644 --- a/src/rsocket.c +++ b/src/rsocket.c @@ -53,19 +53,20 @@ #include "cma.h" #include "indexer.h" -#define RS_INLINE 64 #define RS_OLAP_START_SIZE 2048 #define RS_MAX_TRANSFER 65536 -#define RS_QP_SIZE 384 #define RS_QP_MAX_SIZE 0xFFFE -#define RS_QP_MIN_SIZE 8 #define RS_QP_CTRL_SIZE 4 #define RS_CONN_RETRIES 6 #define RS_SGL_SIZE 2 -#define RS_BUF_SIZE (1 << 17) static struct index_map idm; static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; +static uint16_t def_inline = 64; +static uint16_t def_sqsize = 384; +static uint16_t def_rqsize = 384; +static uint32_t def_mem = (1 << 17); +static uint32_t def_wmem = (1 << 17); static uint32_t polling_time = 10; /* @@ -216,6 +217,40 @@ void rs_configure(void) fscanf(f, "%u", &polling_time); fclose(f); } + + if ((f = fopen(RS_CONF_DIR "/inline_default", "r"))) { + fscanf(f, "%hu", &def_inline); + fclose(f); + + if (def_inline < RS_MIN_INLINE) + def_inline = RS_MIN_INLINE; + } + + if ((f = fopen(RS_CONF_DIR "/sqsize_default", "r"))) { + fscanf(f, "%hu", &def_sqsize); + fclose(f); + } + + if ((f = fopen(RS_CONF_DIR "/rqsize_default", "r"))) { + fscanf(f, "%hu", &def_rqsize); + fclose(f); + } + + if ((f = fopen(RS_CONF_DIR "/mem_default", "r"))) { + fscanf(f, "%u", &def_mem); + fclose(f); + + if (def_mem < 1) + def_mem = 1; + } + + if ((f = fopen(RS_CONF_DIR "/wmem_default", "r"))) { + fscanf(f, "%u", &def_wmem); + fclose(f); + + if (def_wmem < 1) + def_wmem = 1; + } init = 1; out: pthread_mutex_unlock(&mut); @@ -264,9 +299,11 @@ static struct rsocket *rs_alloc(struct rsocket *inherited_rs) rs->rq_size = inherited_rs->rq_size; rs->ctrl_avail = inherited_rs->ctrl_avail; } else { - rs->sbuf_size = rs->rbuf_size = RS_BUF_SIZE; - rs->sq_inline = RS_INLINE; - rs->sq_size = rs->rq_size = RS_QP_SIZE; + rs->sbuf_size = def_wmem; + rs->rbuf_size = def_mem; + rs->sq_inline = def_inline; + rs->sq_size = def_sqsize; + rs->rq_size = def_rqsize; rs->ctrl_avail = RS_QP_CTRL_SIZE; } fastlock_init(&rs->slock); -- 2.41.0