You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Josh Rosen (JIRA)" <ji...@apache.org> on 2016/04/01 01:07:25 UTC
[jira] [Resolved] (SPARK-14277) Significant amount of CPU is being
consumed in SnappyNative arrayCopy method
[ https://issues.apache.org/jira/browse/SPARK-14277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Josh Rosen resolved SPARK-14277.
--------------------------------
Resolution: Fixed
Fix Version/s: 2.0.0
Issue resolved by pull request 12096
[https://github.com/apache/spark/pull/12096]
> Significant amount of CPU is being consumed in SnappyNative arrayCopy method
> ----------------------------------------------------------------------------
>
> Key: SPARK-14277
> URL: https://issues.apache.org/jira/browse/SPARK-14277
> Project: Spark
> Issue Type: Improvement
> Components: Shuffle
> Affects Versions: 1.6.1
> Reporter: Sital Kedia
> Assignee: Sital Kedia
> Fix For: 2.0.0
>
>
> While running a Spark job which is spilling a lot of data in reduce phase, we see that significant amount of CPU is being consumed in native Snappy ArrayCopy method (Please see the stack trace below).
> Stack trace -
> org.xerial.snappy.SnappyNative.$$YJP$$arrayCopy(Native Method)
> org.xerial.snappy.SnappyNative.arrayCopy(SnappyNative.java)
> org.xerial.snappy.Snappy.arrayCopy(Snappy.java:85)
> org.xerial.snappy.SnappyInputStream.rawRead(SnappyInputStream.java:190)
> org.xerial.snappy.SnappyInputStream.read(SnappyInputStream.java:163)
> java.io.DataInputStream.readFully(DataInputStream.java:195)
> java.io.DataInputStream.readLong(DataInputStream.java:416)
> org.apache.spark.util.collection.unsafe.sort.UnsafeSorterSpillReader.loadNext(UnsafeSorterSpillReader.java:71)
> org.apache.spark.util.collection.unsafe.sort.UnsafeSorterSpillMerger$2.loadNext(UnsafeSorterSpillMerger.java:79)
> org.apache.spark.sql.execution.UnsafeExternalRowSorter$1.next(UnsafeExternalRowSorter.java:136)
> org.apache.spark.sql.execution.UnsafeExternalRowSorter$1.next(UnsafeExternalRowSorter.java:123)
> The reason for that is the SpillReader does a lot of small reads from the underlying snappy compressed stream and SnappyInputStream invokes native jni ArrayCopy method to copy the data, which is expensive. We should fix Snappy- java to use with non-JNI based System.arrayCopy method in this case.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org