You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Colin Patrick McCabe (JIRA)" <ji...@apache.org> on 2014/07/16 20:40:05 UTC
[jira] [Commented] (HDFS-6695) Investigate using Java 7's
nonblocking file I/O in BlockReaderLocal to implement read timeouts
[ https://issues.apache.org/jira/browse/HDFS-6695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14063879#comment-14063879 ]
Colin Patrick McCabe commented on HDFS-6695:
--------------------------------------------
There are some docs here: http://docs.oracle.com/javase/7/docs/api/java/nio/channels/AsynchronousFileChannel.html
It's a little unclear what the actual implementation of {{AsynchronousFileChannel}} is. If it's just a thread pool, then it might not be high-performance enough to be useful here. If it uses the underlying asynchronous I/O primitives provided by the operating system, then it would probably be useful for implementing these timeouts.
Another way we could do this on Linux is to read from a pipe instead of a file, and use the {{splice}} system call to move pages from a local disk file into the pipe in a high-performance fashion. But I guess this doesn't work with position reads or alternative operating systems, so maybe it's not that useful....
> Investigate using Java 7's nonblocking file I/O in BlockReaderLocal to implement read timeouts
> ----------------------------------------------------------------------------------------------
>
> Key: HDFS-6695
> URL: https://issues.apache.org/jira/browse/HDFS-6695
> Project: Hadoop HDFS
> Issue Type: Improvement
> Reporter: Colin Patrick McCabe
>
> In BlockReaderLocal, the "read" system call could block for a long time if the disk drive is having problems, or there is a huge amount of I/O contention. This might cause poor latency performance.
> In the remote block readers, we have implemented a read timeout, but we don't have one for the local block reader, since {{FileChannel#read}} doesn't support this.
> Once we move to JDK 7, we should investigate the {{java.nio.file}} nonblocking file I/O package to see if it could be used to implement read timeouts.
--
This message was sent by Atlassian JIRA
(v6.2#6252)