[
https://issues.apache.org/jira/browse/HDFS-281?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13006574#comment-13006574
]
Kihwal Lee commented on HDFS-281:
---------------------------------
I believe it was fixed by HADOOP-3164, which was committed on 4/25/2008.
> Explore usage of the sendfile api via
> java.nio.channels.FileChannel.transfer{To|From} for i/o in datanodes
> ----------------------------------------------------------------------------------------------------------
>
> Key: HDFS-281
> URL: https://issues.apache.org/jira/browse/HDFS-281
> Project: Hadoop HDFS
> Issue Type: Improvement
> Reporter: Arun C Murthy
>
> We could potentially gain a lot of performance by using the *sendfile* system
> call:
> $ man sendfile
> {noformat}
> DESCRIPTION
> This call copies data between one file descriptor and another.
> Either or both of these file descriptors may refer to a socket (but see
> below).
> in_fd should be a file descriptor opened for reading and out_fd should
> be a descriptor opened for writing. offset is a pointer to a variable
> holding the input file pointer position from which sendfile() will
> start reading data. When sendfile() returns, this variable will be set to the
> offset of the byte following the last byte that was read. count is
> the number of bytes to copy between file descriptors.
> Because this copying is done within the kernel, sendfile() does not
> need to spend time transferring data to and from user space.
> {noformat}
> The nio package offers this via the
> java.nio.channels.FileChannel.transfer{To|From} apis:
> http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/FileChannel.html#transferFrom(java.nio.channels.ReadableByteChannel,%20long,%20long)
> http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/FileChannel.html#transferTo(long,%20long,%20java.nio.channels.WritableByteChannel)
> From the javadocs:
> {noformat}
> This method is potentially much more efficient than a simple loop that
> reads from this channel and writes to the target channel. Many operating
> systems can transfer bytes directly from the filesystem cache to the target
> channel without actually copying them.
> {noformat}
> ----
> Hence, this could well-worth exploring for doing io at the datanodes...
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira