[
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.