Hi,

On 5/20/2014 4:21 PM, Hans Feldt wrote:
> But if you have strong requirement for this fine. But you must describe why 
> anyone ever wanted to enable Nagle
Their no strong requirement , for now I will withdraw this
if a practical use-case requirements comes I will re-consider it.

-AVM

On 5/20/2014 4:21 PM, Hans Feldt wrote:
>
>> -----Original Message-----
>> From: A V Mahesh [mailto:[email protected]]
>> Sent: den 20 maj 2014 09:02
>> To: Hans Feldt
>> Cc: [email protected]; [email protected]
>> Subject: Re: [PATCH 3 of 3] dtm: make TCP_NODELAY set socket option 
>> configurable [#654]
>>
>> Hi Hans,
>>
>> On 5/20/2014 1:03 AM, Hans Feldt wrote:
>>> Not sure I understand the use case for setting NODELAY to false. In the 
>>> code you have a comment about setting it to true which
>> anyway is the default. So what is the benefit of setting it to false?
>> [AVM]    I  came across  one requirement where ,user don't want much
>> frequent traffic in network , and doesn't bother about performance .
> [Hans] Nagle is at core about tradeoffs between network utilization and 
> latency. In my opinion the MW should have as predictable latencies as 
> possible. Can we take responsibility for MW characteristics with 
> NODELAY=False?
>
>>> Since dtm is a system wide messaging service it will affect all services 
>>> for example AMFs healtchecks can be delayed sitting in a
>> queue somewhere...
>>    [AVM]  Opnesaf  was working  NODELAY to false previously , we have
>> introduced NODELAY to true recently , so their wont be any problem.
> [Hans] I doubt it was properly tested in production
>
> But if you have strong requirement for this fine. But you must describe why 
> anyone ever wanted to enable Nagle
>
> Thanks,
> Hans
>
>> -AVM
>>
>>> Thanks,
>>> Hans
>>>
>>>> -----Original Message-----
>>>> From: [email protected] [mailto:[email protected]]
>>>> Sent: den 19 maj 2014 06:41
>>>> To: [email protected]; Hans Feldt
>>>> Cc: [email protected]
>>>> Subject: [PATCH 3 of 3] dtm: make TCP_NODELAY set socket option 
>>>> configurable [#654]
>>>>
>>>>    osaf/services/infrastructure/dtms/config/dtmd.conf       |  11 ++++
>>>>    osaf/services/infrastructure/dtms/dtm/dtm_node_sockets.c |  36 
>>>> ++++++++--------
>>>>    osaf/services/infrastructure/dtms/dtm/dtm_read_config.c  |  15 ++++++
>>>>    osaf/services/infrastructure/dtms/include/dtm_cb.h       |   1 +
>>>>    4 files changed, 45 insertions(+), 18 deletions(-)
>>>>
>>>>
>>>> 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)
>>>>
>>>> Note :This path is on top of Hans Feldt published   on 4-29-2014 10:58 AM.
>>>>
>>>> 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
>>>> @@ -85,3 +85,14 @@ DTM_TCP_KEEPALIVE_PROBES=2
>>>>    #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_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
>>>> @@ -577,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 ");
>>>> @@ -727,12 +727,12 @@ 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) {
>>>>                    LOG_ER("DTM : set_keepalive() failed");
>>>> @@ -1296,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
>>>> @@ -96,6 +96,8 @@ void dtm_print_config(DTM_INTERNODE_CB *
>>>>            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 : ");
>>>>    }
>>>>
>>>> @@ -223,6 +225,7 @@ int dtm_read_config(DTM_INTERNODE_CB * c
>>>>            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;
>>>> @@ -439,6 +442,18 @@ int dtm_read_config(DTM_INTERNODE_CB * c
>>>>                                    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_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
>>>> @@ -91,6 +91,7 @@ typedef struct dtm_internode_cb {
>>>>            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;


------------------------------------------------------------------------------
"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

Reply via email to