[ https://issues.apache.org/jira/browse/HADOOP-3672?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12609652#action_12609652 ]
Doug Cutting commented on HADOOP-3672: -------------------------------------- Both pread() and seek();read() would benefit greatly from a connection cache. We'll probably want to both limit the number of cached connections (so that we don't exhaust file handles) and time-out idle connections. A single connection to a datanode would ideally be used for all client communications with that datanode. For example, two threads reading different blocks from the same datanode should multiplex their reads over a shared connection. All this would be done for free if we used RPC to read from datanodes, no? It would be good to benchmark the performance of that approach. > support for persistent connections to improve pread() performance. > ------------------------------------------------------------------ > > Key: HADOOP-3672 > URL: https://issues.apache.org/jira/browse/HADOOP-3672 > Project: Hadoop Core > Issue Type: Improvement > Components: dfs > Affects Versions: 0.17.0 > Environment: Linux 2.6.9-55 , Dual Core Opteron 280 2.4Ghz , 4GB > memory > Reporter: George Wu > > preads() establish new connections per request. yourkit java profiles show > that this connection overhead is pretty significant on the DataNode. > I wrote a simple microbenchmark program which does many iterations of pread() > from different offsets of a large file. I hacked DFSClient/DataNode code to > re-use the same connection/DataNode request handler thread. The performance > improvement was 7% when the data is served from disk and 80% when the data is > served from the OS page cache. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.