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