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

Nikola Vujic commented on MAPREDUCE-5791:
-----------------------------------------

Hi @Chris Nauroth,

No, original code is not calling it with count parameters set to 32K. It seems 
that java.nio.transferTo is chopping a larger transfer into multiple I/O 
requests for 32K each. I didn't find a way to configure that transfer size for 
java.nio. I think that java.nio has native implementation for transferTo in 
Linux (direct transfer with DMA), but in Windows that implementation is 
missing. Then probably, JDK is taking a slow path in Windows.

Btw, java.nio.transferTo does not always use 32K transfers but It seems that 
this is not under user control. At least, I didn't find a way how to control 
this.



> Shuffle phase is slow in Windows - FadviseFileRegion::transferTo does not 
> read disks efficiently
> ------------------------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-5791
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5791
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>            Reporter: Nikola Vujic
>            Assignee: Nikola Vujic
>         Attachments: MAPREDUCE-5791.patch
>
>
> transferTo method in org.apache.hadoop.mapred.FadvisedFileRegion is using 
> transferTo method from a FileChannel to transfer data from a disk to socket. 
> This is performing slow in Windows, slower than in Linux. The reason is that 
> transferTo method for the java.nio is issuing 32K IO requests all the time. 
> In Windows, these 32K transfers are not optimal and we don't get the best 
> performance form the underlying IO subsystem. In order to achieve better 
> performance when reading from the drives, we need to read data in bigger 
> chunks, 512K for example.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to