[ https://issues.apache.org/jira/browse/HDFS-9700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15128971#comment-15128971 ]
Colin Patrick McCabe commented on HDFS-9700: -------------------------------------------- Good find, [~ghelmling]. bq. [~iwasakims] wrote: Adding configuration key such as HdfsClientConfigKeys.DFS_CLIENT_SOCKET_TCP_NODELAY might be conservative option to retain existing behaviour and change the default value later. (You can see HDFS-8829 and HDFS-9259 as example for the fix.) Yeah, it makes sense to have a separate configuration key controlling whether {{TCP_NODELAY}} is set on {{DataTransferProtocol}}. I think we should change the default to be that TCP_NODELAY is "on" for both {{DataTransferProtocol}} and Hadoop RPC. We already try to avoid sending small messages over DataTransferProtocol, so Nagle's algorithm doesn't add a lot (and may significantly degrade the performance of things like hflush and hsync). > DFSClient and DFSOutputStream do not respect TCP_NODELAY config in two spots > ---------------------------------------------------------------------------- > > Key: HDFS-9700 > URL: https://issues.apache.org/jira/browse/HDFS-9700 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs-client > Affects Versions: 2.7.1, 2.6.3 > Reporter: Gary Helmling > Assignee: Gary Helmling > Attachments: HDFS-9700-v1.patch, HDFS-9700_branch-2.7.patch > > > In {{DFSClient.connectToDN()}} and > {{DFSOutputStream.createSocketForPipeline()}}, we never call > {{setTcpNoDelay()}} on the constructed socket before sending. In both cases, > we should respect the value of ipc.client.tcpnodelay in the configuration. > While this applies whether security is enabled or not, it seems to have a > bigger impact on latency when security is enabled. -- This message was sent by Atlassian JIRA (v6.3.4#6332)