diff options
author | Reynold Xin <rxin@databricks.com> | 2015-08-06 23:18:29 -0700 |
---|---|---|
committer | Reynold Xin <rxin@databricks.com> | 2015-08-06 23:18:29 -0700 |
commit | 4309262ec9146d7158ee9957a128bb152289d557 (patch) | |
tree | 47f6dabaaea5c5fcff48dcbdb114aede873ae320 /unsafe/src/main/java | |
parent | 7aaed1b114751a24835204b8c588533d5c5ffaf0 (diff) | |
download | spark-4309262ec9146d7158ee9957a128bb152289d557.tar.gz spark-4309262ec9146d7158ee9957a128bb152289d557.tar.bz2 spark-4309262ec9146d7158ee9957a128bb152289d557.zip |
[SPARK-9700] Pick default page size more intelligently.
Previously, we use 64MB as the default page size, which was way too big for a lot of Spark applications (especially for single node).
This patch changes it so that the default page size, if unset by the user, is determined by the number of cores available and the total execution memory available.
Author: Reynold Xin <rxin@databricks.com>
Closes #8012 from rxin/pagesize and squashes the following commits:
16f4756 [Reynold Xin] Fixed failing test.
5afd570 [Reynold Xin] private...
0d5fb98 [Reynold Xin] Update default value.
674a6cd [Reynold Xin] Address review feedback.
dc00e05 [Reynold Xin] Merge with master.
73ebdb6 [Reynold Xin] [SPARK-9700] Pick default page size more intelligently.
Diffstat (limited to 'unsafe/src/main/java')
-rw-r--r-- | unsafe/src/main/java/org/apache/spark/unsafe/array/ByteArrayMethods.java | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/unsafe/src/main/java/org/apache/spark/unsafe/array/ByteArrayMethods.java b/unsafe/src/main/java/org/apache/spark/unsafe/array/ByteArrayMethods.java index cf693d01a4..70b81ce015 100644 --- a/unsafe/src/main/java/org/apache/spark/unsafe/array/ByteArrayMethods.java +++ b/unsafe/src/main/java/org/apache/spark/unsafe/array/ByteArrayMethods.java @@ -25,6 +25,12 @@ public class ByteArrayMethods { // Private constructor, since this class only contains static methods. } + /** Returns the next number greater or equal num that is power of 2. */ + public static long nextPowerOf2(long num) { + final long highBit = Long.highestOneBit(num); + return (highBit == num) ? num : highBit << 1; + } + public static int roundNumberOfBytesToNearestWord(int numBytes) { int remainder = numBytes & 0x07; // This is equivalent to `numBytes % 8` if (remainder == 0) { |