[ 
https://issues.apache.org/jira/browse/HDFS-6695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14065288#comment-14065288
 ] 

Colin Patrick McCabe commented on HDFS-6695:
--------------------------------------------

bq. I did not look through AsynchronousfileChannel impl, but per the above link 
saying: " This class also defines read and write methods that initiate 
asynchronous operations, returning a Future to represent the pending result of 
the operation. The Future may be used to check if the operation has completed, 
wait for its completion, and retrieve the result. ", seems does the same idea 
like my pseudo code...

Yes, we could definitely set up a thread pool ourselves, but we don't want to 
do that because it would be slow.  Passing large amounts of data between 
threads can mean moving it between CPU cores, which really kills performance.  
It also introduces latency from the context switches.  I was hoping that Java7 
had support for the kernel's native AIO interface... I guess we'll have to see.

We might be able to do something interesting by having a thread pool where 
certain threads were locked to certain physical CPU cores.  Of course, that 
requires JNI to pull off, at the moment, and the overheads of that might wipe 
out any gain...

> 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)

Reply via email to