Ok I will split and publish again with specific Commit Message. -AVM
On 4/29/2014 12:19 PM, Hans Feldt wrote: > Hi, > > This seems like 3 different logical changes thus should be 3 different > patches. You should not change the MDS library in the same patch as the dtm > infrastructure service (unless the changes are very tightly coupled). > > What is the actual MDS/TCP performance improvement here and what change is > bringing it? > I think it would be the increased fragmentation limit but let's be explicit > about it in the commit message. > > Thanks, > Hans > >> -----Original Message----- >> From: [email protected] [mailto:[email protected]] >> Sent: den 29 april 2014 08:20 >> To: [email protected]; Hans Feldt; [email protected] >> Cc: [email protected] >> Subject: [PATCH 1 of 1] mds: TCP performance improvements [#654] >> >> osaf/libs/core/mds/include/mds_dt_tcp_disc.h | 1 - >> osaf/libs/core/mds/mds_dt_tcp.c | 20 +++++- >> osaf/libs/core/mds/mds_dt_trans.c | 12 +- >> osaf/services/infrastructure/dtms/config/dtmd.conf | 23 +++++++ >> osaf/services/infrastructure/dtms/dtm/dtm_intra.c | 13 +-- >> osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c | 44 >> ++++++------- >> osaf/services/infrastructure/dtms/dtm/dtm_read_config.c | 30 +++++++++ >> osaf/services/infrastructure/dtms/include/dtm.h | 2 + >> osaf/services/infrastructure/dtms/include/dtm_cb.h | 3 + >> osaf/services/infrastructure/dtms/include/dtm_intra_disc.h | 2 - >> 10 files changed, 109 insertions(+), 41 deletions(-) >> >> >> This path is on top of Hans Feldt published on >> 4/29/2014 10:58 AM >> >> 1) Their is NO issue with MDS TCP in-service Upgrade ,The value of >> SO_RCVBUF & SO_SNDBUF of TCP sockets was set to 64000 (MDS_SND_RCV_SIZE) >> using setsockopt() ,the kernel doubles this value ,and this doubled >> value is returned by getsockopt(). So MDS_DIRECT_BUF_MAXSIZE size is >> used to send for for both >> previous & current versions of Opensaf nodes which are using MDS TCP as >> transport >> >> 2) Made DTM-TCP inter-node & intra-node socket SO_SNDBUF and >> SO_RCVBUF buffer in bytes configurable . The kernel doubles this value >> (to >> allow space for bookkeeping over-head) when it is set using >> setsockopt(),and >> this doubled value is returned by getsockopt(). The default value is >> set to DTM_SOCK_SND_RCV_BUF_SIZE=126976 >> >> 3) Made TCP_NODELAY configurable to specifi whether MDS TCP >> transport should follow the Nagle algorithm for deciding when to send >> data.By >> default, TCP will follow the Nagle algorithm is disable this behavior , >> can be >> configured to TRUE(1) or FALSE(0) >> >> diff --git a/osaf/libs/core/mds/include/mds_dt_tcp_disc.h >> b/osaf/libs/core/mds/include/mds_dt_tcp_disc.h >> --- a/osaf/libs/core/mds/include/mds_dt_tcp_disc.h >> +++ b/osaf/libs/core/mds/include/mds_dt_tcp_disc.h >> @@ -70,7 +70,6 @@ server_instance_upper + sub_ref_val + su >> #define MDS_SND_VERSION 1 >> #define MDS_RCV_IDENTIFIRE 0x56123456 >> #define MDS_RCV_VERSION 1 >> -#define DTM_INTRANODE_MSG_SIZE 1500 >> #define DTM_INTRANODE_UNSENT_MSG 200 >> >> #define MDS_MDTM_LOWER_INSTANCE 0x00000000 >> diff --git a/osaf/libs/core/mds/mds_dt_tcp.c >> b/osaf/libs/core/mds/mds_dt_tcp.c >> --- a/osaf/libs/core/mds/mds_dt_tcp.c >> +++ b/osaf/libs/core/mds/mds_dt_tcp.c >> @@ -38,7 +38,6 @@ >> #include <configmake.h> >> >> #define MDS_MDTM_SUN_PATH 255 >> -#define MDS_SND_RCV_SIZE 64000 >> #define MDS_MDTM_CONNECT_PATH PKGLOCALSTATEDIR "/osaf_dtm_intra_server" >> >> #ifndef MDS_PORT_NUMBER >> @@ -53,6 +52,9 @@ >> /* Send_buffer_size + MDS_MDTM_DTM_PID_BUFFER_SIZE */ >> #define MDS_MDTM_DTM_PID_BUFFER_SIZE (2 + MDS_MDTM_DTM_PID_SIZE) >> >> +/* The default value is set by the rmem_default/wmem_default */ >> +#define MDS_SOCK_SND_RCV_BUF_SIZE 126976 >> + >> extern uint32_t mdtm_num_subscriptions; >> extern MDS_SUBTN_REF_VAL mdtm_handle; >> extern uint32_t mdtm_global_frag_num_tcp; >> @@ -79,11 +81,12 @@ uint32_t mdtm_process_recv_events_tcp(vo >> uint32_t mds_mdtm_init_tcp(NODE_ID nodeid, uint32_t *mds_tcp_ref) >> { >> uint32_t flags; >> - uint32_t size = MDS_SND_RCV_SIZE; >> + uint32_t size = MDS_SOCK_SND_RCV_BUF_SIZE; >> struct sockaddr_un server_addr_un, dhserver_addr_un; >> struct sockaddr_in server_addr_in; >> struct sockaddr_in6 server_addr_in6; >> uint8_t buffer[MDS_MDTM_DTM_PID_BUFFER_SIZE]; >> + char *ptr; >> >> mdtm_pid = getpid(); >> >> @@ -116,6 +119,19 @@ uint32_t mds_mdtm_init_tcp(NODE_ID nodei >> syslog(LOG_ERR, "MDS:MDTM:TCP ncs_patricia_tree_init failed >> MDTM_INIT\n"); >> return NCSCC_RC_FAILURE; >> } >> + >> + /* setting MDS_SOCK_SND_RCV_BUF_SIZE from environment variable if >> given. >> + The default value is set to MDS_SOCK_SND_RCV_BUF_SIZE (126976). >> + based on application requirements user need to export >> MDS_SOCK_SND_RCV_BUF_SIZE >> + varible. >> + >> + If MDS_SOCK_SND_RCV_BUF_SIZE exported to new value >> + it is also mandatory to change `DTM_SOCK_SND_RCV_BUF_SIZE=` with >> the same value of >> + for example if we export MDS_SOCK_SND_RCV_BUF_SIZE=16777216 >> + DTM_SOCK_SND_RCV_BUF_SIZE=16777216 also need to be changed in >> /etc/opensaf/dtm.conf */ >> + if ((ptr = getenv("MDS_SOCK_SND_RCV_BUF_SIZE")) != NULL) { >> + size = atoi(ptr); >> + } >> >> /* Create the sockets required for Binding, Send, receive and Discovery >> */ >> >> diff --git a/osaf/libs/core/mds/mds_dt_trans.c >> b/osaf/libs/core/mds/mds_dt_trans.c >> --- a/osaf/libs/core/mds/mds_dt_trans.c >> +++ b/osaf/libs/core/mds/mds_dt_trans.c >> @@ -41,7 +41,7 @@ >> >> #define SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP ((2 + MDS_SEND_ADDRINFO_TCP >> + MDTM_FRAG_HDR_LEN_TCP + >> MDS_HDR_LEN_TCP)) >> >> -#define MDTM_MAX_SEND_PKT_SIZE_TCP >> (MDTM_NORMAL_MSG_FRAG_SIZE+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP) /* >> Includes the 30 header >> bytes(2+8+20) */ >> +#define MDTM_MAX_SEND_PKT_SIZE_TCP >> (MDS_DIRECT_BUF_MAXSIZE+SUM_MDS_HDR_PLUS_MDTM_HDR_PLUS_LEN_TCP) >> /* Includes the 30 header bytes(2+8+20) */ >> >> uint32_t mdtm_global_frag_num_tcp; >> extern struct pollfd pfd[2]; >> @@ -363,16 +363,16 @@ static uint32_t mdtm_frag_and_send_tcp(M >> >> len = m_MMGR_LINK_DATA_LEN(usrbuf); /* Getting total len */ >> >> - if (len > (32767 * MDTM_NORMAL_MSG_FRAG_SIZE)) { /* We have 15 >> bits for frag number so 2( pow 15) -1=32767 */ >> + if (len > (32767 * MDS_DIRECT_BUF_MAXSIZE)) { /* We have 15 bits for >> frag number so 2( pow 15) -1=32767 */ >> m_MDS_LOG_CRITICAL >> ("MDTM: App. is trying to send data more than MDTM Can >> fragment and send, Max size is =%d\n", >> - 32767 * MDTM_NORMAL_MSG_FRAG_SIZE); >> + 32767 * MDS_DIRECT_BUF_MAXSIZE); >> m_MMGR_FREE_BUFR_LIST(usrbuf); >> return NCSCC_RC_FAILURE; >> } >> >> while (len != 0) { >> - if (len > MDTM_NORMAL_MSG_FRAG_SIZE) { >> + if (len > MDS_DIRECT_BUF_MAXSIZE) { >> if (i == 1) { >> len_buf = MDTM_MAX_SEND_PKT_SIZE_TCP; >> frag_val = MORE_FRAG_BIT | i; >> @@ -552,7 +552,7 @@ uint32_t mds_mdtm_send_tcp(MDTM_SEND_REQ >> m_MDS_LOG_INFO("MDTM: User Sending Data >> lenght=%d Fr_svc=%d to_svc=%d\n", len, >> req->src_svc_id, >> req->dest_svc_id); >> >> - if (len > MDTM_NORMAL_MSG_FRAG_SIZE) { >> + if (len > MDS_DIRECT_BUF_MAXSIZE) { >> /* Packet needs to be fragmented and >> send */ >> status = mdtm_frag_and_send_tcp(req, >> frag_seq_num, id); >> return status; >> @@ -678,7 +678,7 @@ void mdtm_process_poll_recv_data_tcp(voi >> /* Receive all incoming data on this socket */ >> >> /*******************************************************/ >> >> - recd_bytes = recv(tcp_cb->DBSRsock, tcp_cb->len_buff, >> 2, 0); >> + recd_bytes = recv(tcp_cb->DBSRsock, tcp_cb->len_buff, >> 2, MSG_NOSIGNAL); >> if (0 == recd_bytes) { >> LOG_ER("MDTM:socket_recv() = %d, conn lost with >> dh server, exiting library err :%s", recd_bytes, >> strerror(errno)); >> close(tcp_cb->DBSRsock); >> diff --git a/osaf/services/infrastructure/dtms/config/dtmd.conf >> b/osaf/services/infrastructure/dtms/config/dtmd.conf >> --- a/osaf/services/infrastructure/dtms/config/dtmd.conf >> +++ b/osaf/services/infrastructure/dtms/config/dtmd.conf >> @@ -72,4 +72,27 @@ DTM_TCP_KEEPALIVE_INTVL=1 >> # Optional >> DTM_TCP_KEEPALIVE_PROBES=2 >> >> +# >> +#Used to Set the dtm internode & intranode socket SO_SNDBUF/SO_RCVBUF >> buffer in bytes. >> +#The kernel doubles this value (to allow space for bookkeeping over-head) >> +#when it is set using setsockopt(),and this doubled value is returned by >> +#getsockopt(). The default value is set by the rmem_default/wmem_default >> +#sysctl and the maximum allowed value is set by the rmem_max/wmem_max >> sysctl. >> +# >> +# IMP NOTE : If DTM_SOCK_SND_RCV_BUF_SIZE is configured according to >> application requirements , >> +#it is also mandatory to export `MDS_SOCK_SND_RCV_BUF_SIZE=` with the >> same value of >> +#for example if set as DTM_SOCK_SND_RCV_BUF_SIZE=16777216 need to do : >> +#export MDS_SOCK_SND_RCV_BUF_SIZE=16777216 >> +DTM_SOCK_SND_RCV_BUF_SIZE=126976 >> >> +# >> +#Specifies whether MDS TCP transport should follow the Nagle algorithm for >> +#deciding when to send data.By default, TCP will follow the Nagle algorithm >> is disable >> +#this behavior,MDS TCP transport can enable TCP_NODELAY to force >> +#TCP to always send data immediately.For example,TCP_NODELAY should be used >> +#when there is an application using TCP for a request/response. >> +#This option is only supported for sockets with an address family >> +#of AF_INET or AF_INET6 (internode )and type of SOCK_STREAM >> +# TRUE(1) or FALSE(0) >> +DTM_TCP_NODELAY_FLAG=1 >> + >> diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_intra.c >> b/osaf/services/infrastructure/dtms/dtm/dtm_intra.c >> --- a/osaf/services/infrastructure/dtms/dtm/dtm_intra.c >> +++ b/osaf/services/infrastructure/dtms/dtm/dtm_intra.c >> @@ -42,7 +42,6 @@ DTM_INTRANODE_CB *dtm_intranode_cb = NUL >> >> #define DTM_INTRANODE_MAX_PROCESSES 100 >> #define DTM_INTRANODE_POLL_TIMEOUT 20000 >> -#define DTM_RECV_BUFFER_SIZE 1500 >> #define DTM_INTRANODE_TASKNAME "DTM_INTRANODE" >> #define DTM_INTRANODE_STACKSIZE NCS_STACKSIZE_HUGE >> >> @@ -58,7 +57,7 @@ static struct pollfd pfd_list[DTM_INTRAN >> >> static int dtm_intranode_max_fd; >> >> -static uint32_t dtm_intra_processing_init(char *node_ip, DTM_IP_ADDR_TYPE >> i_addr_family); >> +static uint32_t dtm_intra_processing_init(char *node_ip, DTM_IP_ADDR_TYPE >> i_addr_family, int32_t sock_snd_rcv_buf_size); >> static void dtm_intranode_processing(void); >> static uint32_t dtm_intranode_add_poll_fdlist(int fd, uint16_t event); >> static uint32_t dtm_intranode_create_rcv_task(int task_hdl); >> @@ -79,10 +78,9 @@ uint32_t dtm_socket_domain = AF_UNIX; >> */ >> uint32_t dtm_service_discovery_init(DTM_INTERNODE_CB *dtms_cb) >> { >> - return dtm_intra_processing_init(dtms_cb->ip_addr, >> dtms_cb->i_addr_family); >> + return dtm_intra_processing_init(dtms_cb->ip_addr, >> dtms_cb->i_addr_family, dtms_cb->sock_snd_rcv_buf_size); >> } >> >> -#define DTM_INTRANODE_SOCK_SIZE 64000 >> >> /** >> * Function to init the intranode processing >> @@ -92,10 +90,10 @@ uint32_t dtm_service_discovery_init(DTM_ >> * @return NCSCC_RC_FAILURE >> * >> */ >> -uint32_t dtm_intra_processing_init(char *node_ip, DTM_IP_ADDR_TYPE >> i_addr_family) >> +uint32_t dtm_intra_processing_init(char *node_ip, DTM_IP_ADDR_TYPE >> i_addr_family, int32_t sock_snd_rcv_buf_size) >> { >> >> - int servlen, size = DTM_INTRANODE_SOCK_SIZE; /* For socket fd and >> server len */ >> + int servlen, size = sock_snd_rcv_buf_size; /* For socket fd and >> server len */ >> struct sockaddr_un serv_addr; /* For Unix Sock address */ >> char server_ux_name[255]; >> NCS_PATRICIA_PARAMS pat_tree_params; >> @@ -112,6 +110,7 @@ uint32_t dtm_intra_processing_init(char >> return NCSCC_RC_FAILURE; >> } >> dtm_intranode_cb->sock_domain = dtm_socket_domain; >> + dtm_intranode_cb->sock_snd_rcv_buf_size = sock_snd_rcv_buf_size; >> >> /* Open a socket, If socket opens to fail return Error */ >> dtm_intranode_cb->server_sockfd = socket(dtm_socket_domain, >> SOCK_STREAM, 0); >> @@ -894,7 +893,7 @@ static uint32_t dtm_intranode_process_in >> { >> int flags; >> /* Accept processing */ >> - int accept_fd = 0, retry_count = 0, size = DTM_INTRANODE_SOCK_SIZE; >> + int accept_fd = 0, retry_count = 0, size = >> dtm_intranode_cb->sock_snd_rcv_buf_size; >> socklen_t len = sizeof(struct sockaddr_un); >> struct sockaddr_un cli_addr; >> /* Accept should be non_block */ >> diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c >> b/osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c >> --- a/osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c >> +++ b/osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c >> @@ -26,7 +26,6 @@ >> >> #define MYPORT "6900" >> #define MAXBUFLEN 100 >> -#define DTM_INTERNODE_SOCK_SIZE 64000 >> >> struct addrinfo *mcast_sender_addr; /* Holder for mcast_sender_addr >> address */ >> >> @@ -431,7 +430,7 @@ uint32_t dtm_comm_socket_send(int sock_d >> int rtn = 0; >> int err = 0; >> int rc = NCSCC_RC_SUCCESS; >> - rtn = send(sock_desc, (raw_type *) buffer, buffer_len, 0); >> + rtn = send(sock_desc, (raw_type *) buffer, buffer_len, MSG_NOSIGNAL); >> err = errno; >> if (rtn < 0) { >> if (!IS_BLOCKIN_ERROR(err)) { >> @@ -508,7 +507,7 @@ static char *comm_get_foreign_address(in >> int comm_socket_setup_new(DTM_INTERNODE_CB * dtms_cb, const char >> *foreign_address, in_port_t foreign_port, >> DTM_IP_ADDR_TYPE ip_addr_type) >> { >> - int sock_desc = -1, size = DTM_INTERNODE_SOCK_SIZE; >> + int sock_desc = -1, size = dtms_cb->sock_snd_rcv_buf_size; >> int err = 0, rv; >> char local_port_str[INET6_ADDRSTRLEN]; >> struct addrinfo *addr_list; >> @@ -578,12 +577,12 @@ int comm_socket_setup_new(DTM_INTERNODE_ >> goto done; >> } >> >> - int flag = 1; >> - if (setsockopt(sock_desc, IPPROTO_TCP, TCP_NODELAY, (void *)&flag, >> sizeof(flag)) != 0) { >> - LOG_ER("DTM:Socket TCP_NODELAY set failed err :%s", >> strerror(errno)); >> - dtm_comm_socket_close(&sock_desc); >> - goto done; >> - } >> + int flag = dtms_cb->tcp_nodelay_flag; >> + if (setsockopt(sock_desc, IPPROTO_TCP, TCP_NODELAY, (void *)&flag, >> sizeof(flag)) != 0) { >> + LOG_ER("DTM:Socket TCP_NODELAY set failed err :%s", >> strerror(errno)); >> + dtm_comm_socket_close(&sock_desc); >> + goto done; >> + } >> >> if (NCSCC_RC_SUCCESS != set_keepalive(dtms_cb, sock_desc)) { >> LOG_ER("DTM :set_keepalive failed "); >> @@ -660,7 +659,7 @@ uint32_t dtm_stream_nonblocking_listener >> struct addrinfo addr_criteria; /* Criteria for address match */ >> char local_port_str[6]; >> struct addrinfo *addr_list = NULL, *p;; /* List of serv addresses */ >> - int size = DTM_INTERNODE_SOCK_SIZE; >> + int size = dtms_cb->sock_snd_rcv_buf_size; >> int rv; >> char ip_addr_eth[INET6_ADDRSTRLEN + IFNAMSIZ]; >> dtms_cb->stream_sock = -1; >> @@ -728,11 +727,11 @@ uint32_t dtm_stream_nonblocking_listener >> LOG_ER("DTM:Socket snd buf size set failed err :%s", >> strerror(errno)); >> } >> >> - int flag = 1; >> - if (setsockopt(dtms_cb->stream_sock, IPPROTO_TCP, TCP_NODELAY, >> (void *)&flag, sizeof(flag)) != 0) { >> - LOG_ER("DTM:Socket TCP_NODELAY set failed err :%s", >> strerror(errno)); >> - dtm_sockdesc_close(dtms_cb->stream_sock); >> - return NCSCC_RC_FAILURE; >> + int flag = dtms_cb->tcp_nodelay_flag; >> + if (setsockopt(dtms_cb->stream_sock, IPPROTO_TCP, TCP_NODELAY, (void >> *)&flag, sizeof(flag)) != 0) { >> + LOG_ER("DTM:Socket TCP_NODELAY set failed err :%s", >> strerror(errno)); >> + dtm_sockdesc_close(dtms_cb->stream_sock); >> + return NCSCC_RC_FAILURE; >> } >> >> if (set_keepalive(dtms_cb, dtms_cb->stream_sock) != NCSCC_RC_SUCCESS) { >> @@ -1249,7 +1248,6 @@ int dtm_process_connect(DTM_INTERNODE_CB >> >> } >> >> -#define DTM_INTERNODE_SOCK_SIZE 64000 >> >> /** >> * Function for dtm accept the connection >> @@ -1270,7 +1268,7 @@ int dtm_process_accept(DTM_INTERNODE_CB >> int err = 0; >> DTM_NODE_DB node; >> DTM_NODE_DB *new_node; >> - int new_conn_sd, size = DTM_INTERNODE_SOCK_SIZE; >> + int new_conn_sd, size = dtms_cb->sock_snd_rcv_buf_size; >> const struct sockaddr *clnt_addr1 = (struct sockaddr *)&clnt_addr; >> TRACE_ENTER(); >> >> @@ -1298,12 +1296,12 @@ int dtm_process_accept(DTM_INTERNODE_CB >> goto done; >> } >> >> - int flag = 1; >> - if (setsockopt(new_conn_sd, IPPROTO_TCP, TCP_NODELAY, (void >> *)&flag, sizeof(flag)) != 0) { >> - LOG_ER("DTM:Socket TCP_NODELAY set failed err :%s", >> strerror(errno)); >> - dtm_comm_socket_close(&new_conn_sd); >> - goto done; >> - } >> + int flag = dtms_cb->tcp_nodelay_flag; >> + if (setsockopt(new_conn_sd, IPPROTO_TCP, TCP_NODELAY, (void *)&flag, >> sizeof(flag)) != 0) { >> + LOG_ER("DTM:Socket TCP_NODELAY set failed err :%s", >> strerror(errno)); >> + dtm_comm_socket_close(&new_conn_sd); >> + goto done; >> + } >> >> if (NCSCC_RC_SUCCESS != set_keepalive(dtms_cb, new_conn_sd)) { >> LOG_ER("DTM:set_keepalive failed "); >> diff --git a/osaf/services/infrastructure/dtms/dtm/dtm_read_config.c >> b/osaf/services/infrastructure/dtms/dtm/dtm_read_config.c >> --- a/osaf/services/infrastructure/dtms/dtm/dtm_read_config.c >> +++ b/osaf/services/infrastructure/dtms/dtm/dtm_read_config.c >> @@ -94,6 +94,10 @@ void dtm_print_config(DTM_INTERNODE_CB * >> TRACE(" %d", config->initial_dis_timeout); >> TRACE(" DTM_BCAST_FRE_MSECS: "); >> TRACE(" %d", config->bcast_msg_freq); >> + TRACE(" DTM_SOCK_SND_RCV_BUF_SIZE: "); >> + TRACE(" %d", config->sock_snd_rcv_buf_size); >> + TRACE(" DTM_TCP_NODELAY_FLAG: "); >> + TRACE(" %d", config->tcp_nodelay_flag); >> TRACE("DTM : "); >> } >> >> @@ -220,6 +224,8 @@ int dtm_read_config(DTM_INTERNODE_CB * c >> config->i_addr_family = DTM_IP_ADDR_TYPE_IPV4; >> config->bcast_msg_freq = BCAST_FRE; >> config->initial_dis_timeout = DIS_TIME_OUT; >> + config->sock_snd_rcv_buf_size = DTM_SOCK_SND_RCV_BUF_SIZE; >> + config->tcp_nodelay_flag = true; >> config->mcast_flag = false; >> config->scope_link = false; >> config->node_id = m_NCS_GET_NODE_ID; >> @@ -424,6 +430,30 @@ int dtm_read_config(DTM_INTERNODE_CB * c >> tag_len = 0; >> >> } >> + if (strncmp(line, "DTM_SOCK_SND_RCV_BUF_SIZE=", >> strlen("DTM_SOCK_SND_RCV_BUF_SIZE=")) == 0) { >> + tag_len = strlen("DTM_SOCK_SND_RCV_BUF_SIZE="); >> + config->sock_snd_rcv_buf_size = >> atoi(&line[tag_len]); >> + if (config->sock_snd_rcv_buf_size < 126976) { >> + LOG_ER("DTM: DTM_SOCK_SND_RCV_BUF_SIZE >> must be greater than >> rmem_default/wmem_default sysctl of dtmd.conf"); >> + return -1; >> + } >> + >> + tag = 0; >> + tag_len = 0; >> + >> + } >> + >> + if (strncmp(line, "DTM_TCP_NODELAY_FLAG=", >> strlen("DTM_TCP_NODELAY_FLAG=")) == 0) { >> + tag_len = strlen("DTM_TCP_NODELAY_FLAG="); >> + config->tcp_nodelay_flag = atoi(&line[tag_len]); >> + if (config->tcp_nodelay_flag < 0 || >> config->tcp_nodelay_flag > 1) { >> + LOG_ER("DTM: DTM_TCP_NODELAY_FLAG >> needs to be 0 or 1 of dtmd.conf "); >> + return -1; >> + } >> + tag = 0; >> + tag_len = 0; >> + >> + } >> } >> >> memset(line, 0, DTM_MAX_TAG_LEN); >> diff --git a/osaf/services/infrastructure/dtms/include/dtm.h >> b/osaf/services/infrastructure/dtms/include/dtm.h >> --- a/osaf/services/infrastructure/dtms/include/dtm.h >> +++ b/osaf/services/infrastructure/dtms/include/dtm.h >> @@ -37,6 +37,8 @@ extern uint8_t initial_discovery_phase; >> #define m_NODE_DISCOVERY_TASKNAME "NODE_DISCOVERY" >> #define m_NODE_DISCOVERY_STACKSIZE NCS_STACKSIZE_HUGE >> >> +/* The default value of SO_RCVBUF & SO_SNDBUF , it is set by the >> rmem_default/wmem_default */ >> +#define DTM_SOCK_SND_RCV_BUF_SIZE 126976 >> #define DTM_MAX_TAG_LEN 256 >> >> typedef enum { >> diff --git a/osaf/services/infrastructure/dtms/include/dtm_cb.h >> b/osaf/services/infrastructure/dtms/include/dtm_cb.h >> --- a/osaf/services/infrastructure/dtms/include/dtm_cb.h >> +++ b/osaf/services/infrastructure/dtms/include/dtm_cb.h >> @@ -90,6 +90,8 @@ typedef struct dtm_internode_cb { >> int comm_keepidle_time; >> int comm_keepalive_intvl; >> int comm_keepalive_probes; >> + int32_t sock_snd_rcv_buf_size; /* The value of SO_RCVBUF & SO_SNDBUF */ >> + uint32_t tcp_nodelay_flag; /* The value of TCP_NODELAY Flag */ >> SYSF_MBX mbx; >> int mbx_fd; >> } DTM_INTERNODE_CB; >> @@ -116,6 +118,7 @@ typedef struct dtm_intranode_cb { >> SYSF_MBX mbx; >> int mbx_fd; >> int sock_domain; >> + int32_t sock_snd_rcv_buf_size; /* The value of SO_RCVBUF & SO_SNDBUF */ >> } DTM_INTRANODE_CB; >> >> extern DTM_INTRANODE_CB *dtm_intranode_cb; >> diff --git a/osaf/services/infrastructure/dtms/include/dtm_intra_disc.h >> b/osaf/services/infrastructure/dtms/include/dtm_intra_disc.h >> --- a/osaf/services/infrastructure/dtms/include/dtm_intra_disc.h >> +++ b/osaf/services/infrastructure/dtms/include/dtm_intra_disc.h >> @@ -17,8 +17,6 @@ >> #ifndef DTM_INTRA_DISC_H >> #define DTM_INTRA_DISC_H >> >> -#define DTM_INTRANODE_MSG_SIZE 1400 >> -#define DTM_INTERNODE_MSG_SIZE DTM_INTRANODE_MSG_SIZE >> >> /* 2 -len(0), 4 - iden(2), 1- ver(6), 1-msg type(7), 4- server_type (8), >> 4 -server lower(12), 4 -server lower(16), 8 -ref(20), 4 >> - nodeid(28), ------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available. Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
