SlideShare a Scribd company logo
1 of 26
Download to read offline
ASIA 2013 (LCA13)
LEG – Hadoop DFS Performance
Steve Capper <steve.capper@linaro.org>
ASIA 2013 (LCA13)
www.linaro.org
Hadoop Performance on ARM
I concentrated on reducing the time taken for CPU bound
tasks (the latency).
My work, so far, has focussed on the underlying cluster
filesystem, HDFS, as this underpins a lot of Hadoop
workloads.
The latest release-tagged Hadoop at the time of
experimentation was 2.0.2-alpha. So this was the version
used. (2.0.3-alpha has just come out).
Hadoop installations consist of rather a lot of moving parts.
So please let me know if I should be concentrating on
something else! :-)
ASIA 2013 (LCA13)
www.linaro.org
Hadoop Distributed Filesystem – Overview
HDFS is the default Hadoop distributed filesystem.
Consists of multiple “nodes”:
Namenode – holds the metadata for the filesystem and keeps track of
the datanodes.
Only one namenode is active at a time per namespace.
Thus there is a high memory requirement for a namenode.
Datanodes – store the file's blocks.
The default block size is 64MB.
(Optional) Passive namenodes – To maintain an High Availability
configuration, one can set up shared storage (via NFS or by
journalnodes) and have namenodes on standby to failover.
Filesystem blocks are replicated between datanodes.
Datanodes can be “rack aware”; data will be distributed between
racks.
Nodes can run on the same machine or on different
machines.
ASIA 2013 (LCA13)
www.linaro.org
Data Integrity in HDFS
Hadoop mitigates against hardware failure in the following
ways:
Metadata can be saved to multiple filesystems and regular snapshots
are usually taken to allow for disaster recovery.
On some HA configurations, multiple journalnodes maintain a quorum of
the metadata.
Data blocks are replicated across multiple datanodes (preferably to
different racks).
Data blocks are regularly transmitted:
All data streams are checksummed.
The default checksum algorithm is CRC32c.
The default number of bytes per checksum is 512 bytes.
ASIA 2013 (LCA13)
www.linaro.org
Test Configuration
So far I have been micro-benchmarking single machine
workloads (1 name node, 1 data node, 1 workload).
I have been working on an A9 platform.
TestDFSIO -read and -write have been tested with a
10GB filesize.
Soft-float Oracle JDK 1.7.0_10 was used.
Performance was measured using Linux perf -a, Java
samples were taken with the inbuilt profiler:
-Xrunhprof:cpu=samples,depth=10
ASIA 2013 (LCA13)
www.linaro.org
Plain TestDFSIO write tests – Samples
CPU SAMPLES BEGIN (total = 164879)
rank self accum count trace method
1 24.85% 24.85% 40970 301219 sun.nio.ch.EPollArrayWrapper.epollWait
2 24.79% 49.64% 40870 301362 sun.nio.ch.EPollArrayWrapper.epollWait
3 24.79% 74.42% 40866 301363 sun.nio.ch.EPollArrayWrapper.epollWait
4 24.78% 99.20% 40859 301358 sun.nio.ch.EPollArrayWrapper.epollWait
5 0.07% 99.27% 118 300073 java.lang.ClassLoader.defineClass1
6 0.03% 99.31% 57 300020 java.util.zip.ZipFile.open
7 0.03% 99.34% 55 300179 java.util.zip.ZipFile.getEntry
8 0.03% 99.38% 54 300062 java.util.zip.ZipFile.read
9 0.02% 99.39% 31 300076 java.util.zip.Inflater.inflateBytes
10 0.01% 99.41% 23 301165 sun.nio.ch.FileDispatcherImpl.force0
+ 33.80% java perf-13641.map [.] 0xb4258538
+ 19.98% java perf-13534.map [.] 0xb403e980
+ 5.37% java libc-2.15.so [.] memcpy
+ 3.02% java [kernel.kallsyms] [k] __copy_from_user
+ 2.60% java [kernel.kallsyms] [k] __copy_to_user_std
+ 1.86% java [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore
+ 1.01% swapper [kernel.kallsyms] [k] finish_task_switch
+ 0.66% swapper [kernel.kallsyms] [k] tick_nohz_idle_enter
+ 0.55% java [kernel.kallsyms] [k] get_page_from_freelist
+ 0.44% java [kernel.kallsyms] [k] free_hot_cold_page
+ 0.42% swapper [kernel.kallsyms] [k] default_idle
Namenode Java samples:
Linux perf results:
ASIA 2013 (LCA13)
www.linaro.org
Plain TestDFSIO read & write CPU usage
Plain TestDFSIO Write Plain TestDFSIO Read
Other
Java
memcpy
crc32c_sb8
ASIA 2013 (LCA13)
www.linaro.org
Some analysis of plain TestDFSIO
The namenode doesn't do much when it's in charge of 1
datanode. (this will change when things scale up).
When writing data:
Most of the Java time is spent in PureJavaCrc32C.update
Most of the CPU time is spent in Java land.
When reading data:
Most of the Java time is spent in
NativeCrc32.nativeVerifyChunkedSums.
Most of the CPU time is in the native function: crc32c_sb8
For both reading and writing data:
~10% of the CPU time is spent copying memory.
ASIA 2013 (LCA13)
www.linaro.org
Optimising the read and write paths
Trevor Robinson has proposed a patch to improve the write
path:
HDFS-3529 “Use direct buffers for data in write path”
I have been working on speeding up the computation of
CRC32c checksums, by using NEON.
Also, I've performed some very preliminary experiments on
replacing PureJavaCrc32C with a JNI class that references
the NEON CRC code.
ASIA 2013 (LCA13)
www.linaro.org
NEON optimisation of the CRC32c algorithm
I worked on an algorithm Q4 last year:
https://wiki.linaro.org/LEG/Engineering/CRC
Given an input buffer, we perform polynomial multiplication and
addition to give a slighter smaller buffer with the same CRC. This is
referred to as “folding”.
The algorithm reduced the buffer by 32 bytes at a time.
The final buffer of 32 bytes was then processed by slice-by-8 as
normal.
I found that the vast majority of CRCs in Hadoop (in both
NativeCrc32.nativeVerifyChunkedSums and
PureJavaCrc32C.update) were computed for 512 byte buffers.
ASIA 2013 (LCA13)
www.linaro.org
A single 64 bit fold
32
64
64
M(x)32
A(x)B(x)
64 =A(x) * (x^64 mod P(x))
=B(x) * (x^96 mod P(x))
M'(x)
+
+
64
CRC(M'(x)) = CRC(M(x))
=
ASIA 2013 (LCA13)
www.linaro.org
NEON implementations
With ARMv7 NEON we can only perform polynomial
multiplication on 8 bit lanes:
We need to be able to multiply at least 32 bits, thus multiple vmull.p8's
were chained together to achieve this).
There are 16 vmull.p8's per fold, so a little register pressure!
A gcc intrinsic version has been coded up:
This is considerably simpler to look at.
Unfortunately, it runs a little slower than hand-optimised assembler.
A test case has been sent to the Linaro Toolchain Working group (a
couple of weeks ago) and this is being analysed by them.
ASIA 2013 (LCA13)
www.linaro.org
Replacing PureJavaCrc32C
PureJavaCrc32C has two noteworthy methods:
public void update(byte[] b, int off, int len) – called mostly for lengths
of 512.
public void update(int b) – seldom called.
I created a new class implementing the Checksum interface
that:
Used the same implementation of: update(int b) as PureJavaCrc32C.
Called straight into JNI for update(byte[] b, int off, int len).
The class name NativeCrc32 was already taken by
something else, so I chose a rather silly temporary name:
HyperCrc32C
ASIA 2013 (LCA13)
www.linaro.org
Dealing with byte [] in JNI
We are only reading from the byte[] array, and only for a very short
time.
Thus I pinned the buffer in memory with:
GetPrimitiveArrayCritical
Then subsequently released the buffer with
ReleasePrimitiveArrayCritical(..., JNI_ABORT)
This worked for me, but perhaps a better long term solution would
be to change the backing data type to a ByteBuffer?
We could also be clever and change the alignment of these?
Rather than test every optimisation individually in this talk; I am
going to put them all together.
ASIA 2013 (LCA13)
www.linaro.org
TestDFSIO read & write CPU usage
Plain TestDFSIO Write New TestDFSIO Write
Other
Java
memcpy
crc
Plain TestDFSIO Read New TestDFSIO Read
ASIA 2013 (LCA13)
www.linaro.org
Some Analysis of the New TestDFSIO runs
The name node samples are unchanged.
For the write path:
Most of the time is now spent running native code rather than Java
code.
There is a noticeable reduction in Hadoop user CPU usage.
For the read path:
Most of the time is still spent running native code.
There is again a reduction in Hadoop user CPU usage.
For both the read and write paths there is a significant
amount of CPU time spent copying memory around.
ASIA 2013 (LCA13)
www.linaro.org
Conclusions and Further Work
The CPU usage required for TestDFSIO runs has been
reduced for both read/write paths.
This gives us more CPU cycles to run Hadoop jobs with!
Hadoop is known to be very sensitive to underlying disk IO.
To optimise HDFS IO, it would make sense to optimise disk/filesystem
IO as much as possible and re-run these benchmarks.
As Hadoop runs under Java:
It makes sense to keep track of JVMs.
A beta hard-float JVM has been released.
The CPU usage for memcpy is making me uneasy!
ASIA 2013 (LCA13)
www.linaro.org
We should also consider our hardware...
HDD SSD
0
0.5
1
1.5
2
2.5
TestDFSIO Write
Relative performance MB/s
HDD SSD
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
TestDFSIO Read
Relative performance MB/s
ASIA 2013 (LCA13)
www.linaro.org
Plain TestDFSIO write tests – Some Samples
CPU SAMPLES BEGIN (total = 81097)
rank self accum count trace method
1 36.88% 36.88% 29906 300854 sun.nio.ch.EPollArrayWrapper.epollWait
2 32.95% 69.83% 26723 301107 sun.nio.ch.EPollArrayWrapper.epollWait
3 16.48% 86.31% 13363 301109 org.apache.hadoop.util.PureJavaCrc32C.update
4 2.74% 89.05% 2225 301113 sun.misc.Unsafe.copyMemory
5 1.67% 90.72% 1357 301115 sun.nio.ch.FileDispatcherImpl.write0
6 1.09% 91.81% 884 301128 org.apache.hadoop.hdfs.DFSOutputStream.writeChunk
7 0.70% 92.51% 564 301110 sun.nio.ch.FileDispatcherImpl.read0
8 0.42% 92.93% 342 301123 org.apache.hadoop.hdfs.DFSOutputStream.writeChunk
9 0.40% 93.33% 326 301202
org.apache.hadoop.hdfs.DFSOutputStream.waitAndQueueCurrentPacket
10 0.33% 93.66% 266 301124 java.lang.System.arraycopy
CPU SAMPLES BEGIN (total = 227245)
rank self accum count trace method
1 16.85% 16.85% 38293 301110 sun.nio.ch.EPollArrayWrapper.epollWait
2 16.82% 33.67% 38228 301313 sun.nio.ch.EPollArrayWrapper.epollWait
3 16.80% 50.48% 38184 301374 sun.nio.ch.EPollArrayWrapper.epollWait
4 16.80% 67.28% 38184 301375 sun.nio.ch.EPollArrayWrapper.epollWait
5 16.80% 84.08% 38169 301373 sun.nio.ch.ServerSocketChannelImpl.accept0
6 6.75% 90.83% 15342 301646 java.io.FileOutputStream.writeBytes
7 2.77% 93.60% 6294 301642 org.apache.hadoop.util.DataChecksum.verifyChunkedSums
8 2.49% 96.08% 5653 301664 java.io.FileOutputStream.writeBytes
9 1.14% 97.22% 2587 301640 sun.nio.ch.FileDispatcherImpl.read0
10 0.35% 97.57% 798 301691 sun.nio.ch.FileDispatcherImpl.write0
Workload Java samples:
Datanode Java samples:
ASIA 2013 (LCA13)
www.linaro.org
Plain TestDFSIO read tests – Some Samples
CPU SAMPLES BEGIN (total = 13668)
rank self accum count trace method
1 36.82% 36.82% 5033 301083 org.apache.hadoop.util.NativeCrc32.nativeVerifyChunkedSums
2 31.37% 68.19% 4287 301080 sun.nio.ch.EPollArrayWrapper.epollWait
3 14.00% 82.18% 1913 301086 sun.nio.ch.FileDispatcherImpl.read0
4 4.82% 87.01% 659 301082 sun.misc.Unsafe.copyMemory
5 2.00% 89.00% 273 301118 sun.nio.ch.SocketChannelImpl.isConnected
6 1.87% 90.88% 256 301089 sun.nio.ch.FileDispatcherImpl.read0
7 0.76% 91.64% 104 300072 java.lang.ClassLoader.defineClass1
8 0.61% 92.25% 84 301105 sun.nio.ch.SocketChannelImpl.isConnected
9 0.51% 92.76% 70 300841 sun.nio.ch.EPollArrayWrapper.epollWait
10 0.49% 93.25% 67 301127 sun.misc.Unsafe.copyMemory
CPU SAMPLES BEGIN (total = 118437)
rank self accum count trace method
1 17.57% 17.57% 20810 301107 sun.nio.ch.EPollArrayWrapper.epollWait
2 17.51% 35.08% 20741 301304 sun.nio.ch.EPollArrayWrapper.epollWait
3 17.48% 52.56% 20697 301368 sun.nio.ch.EPollArrayWrapper.epollWait
4 17.48% 70.03% 20697 301369 sun.nio.ch.EPollArrayWrapper.epollWait
5 17.47% 87.51% 20695 301367 sun.nio.ch.ServerSocketChannelImpl.accept0
6 8.71% 96.22% 10320 301593 sun.nio.ch.FileChannelImpl.transferTo0
7 0.48% 96.70% 569 301524 org.apache.hadoop.io.nativeio.NativeIO.posix_fadvise
8 0.40% 97.10% 471 301388 sun.nio.ch.EPollArrayWrapper.epollWait
9 0.31% 97.41% 364 301595 sun.nio.ch.FileDispatcherImpl.write0
10 0.29% 97.69% 339 301648 java.io.FileInputStream.readBytes
Workload Java samples:
Datanode Java samples:
ASIA 2013 (LCA13)
www.linaro.org
Plain TestDFSIO read tests – More Samples
CPU SAMPLES BEGIN (total = 92048)
rank self accum count trace method
1 24.81% 24.81% 22833 301222 sun.nio.ch.EPollArrayWrapper.epollWait
2 24.68% 49.48% 22715 301361 sun.nio.ch.EPollArrayWrapper.epollWait
3 24.68% 74.16% 22713 301362 sun.nio.ch.EPollArrayWrapper.epollWait
4 24.67% 98.83% 22708 301360 sun.nio.ch.EPollArrayWrapper.epollWait
5 0.16% 98.99% 147 300075 java.lang.ClassLoader.defineClass1
6 0.05% 99.04% 47 300084 java.util.zip.ZipFile.getEntry
7 0.03% 99.07% 32 300078 java.util.zip.Inflater.inflateBytes
8 0.03% 99.11% 30 300123 java.util.zip.ZipFile.read
9 0.02% 99.13% 21 301170 sun.nio.ch.FileDispatcherImpl.force0
10 0.02% 99.15% 16 301165
org.apache.hadoop.hdfs.server.namenode.EditLogFileOutputStream.<clinit>
+ 36.37% java libhadoop.so.1.0.0 [.] crc32c_sb8
+ 9.40% java [kernel.kallsyms] [k] __copy_to_user_std
+ 6.02% java perf-14362.map [.] 0xb40d5040
+ 5.52% java perf-15039.map [.] 0xb440aba0
+ 4.92% java libc-2.15.so [.] memcpy
+ 2.09% java [kernel.kallsyms] [k] kmap_high
+ 1.51% java [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore
+ 1.10% swapper [kernel.kallsyms] [k] default_idle
+ 0.70% kswapd0 [kernel.kallsyms] [k] __remove_mapping
+ 0.68% java [kernel.kallsyms] [k] get_page_from_freelist
Namenode Java samples:
Linux perf results:
ASIA 2013 (LCA13)
www.linaro.org
New TestDFSIO write tests – Some Samples
CPU SAMPLES BEGIN (total = 52774)
rank self accum count trace method
1 38.67% 38.67% 20407 300839 sun.nio.ch.EPollArrayWrapper.epollWait
2 32.56% 71.23% 17184 301074 sun.nio.ch.EPollArrayWrapper.epollWait
3 11.51% 82.74% 6076 301070 org.apache.hadoop.util.HyperCrc32C.nativeUpdate
4 4.14% 86.88% 2184 301071 sun.misc.Unsafe.copyMemory
5 2.69% 89.57% 1419 301076 sun.nio.ch.FileDispatcherImpl.write0
6 0.65% 90.22% 341 301102 sun.nio.ch.FileDispatcherImpl.read0
7 0.45% 90.67% 240 301143 java.lang.System.arraycopy
8 0.44% 91.11% 231 300804 sun.nio.ch.EPollArrayWrapper.epollWait
9 0.38% 91.49% 203 301154 sun.nio.ch.EPollArrayWrapper.epollCtl
10 0.38% 91.88% 202 301080 org.apache.hadoop.hdfs.DFSOutputStream.writeChunk
CPU SAMPLES BEGIN (total = 234447)
rank self accum count trace method
1 17.80% 17.80% 41734 301113 sun.nio.ch.EPollArrayWrapper.epollWait
2 17.77% 35.58% 41672 301307 sun.nio.ch.EPollArrayWrapper.epollWait
3 17.76% 53.33% 41629 301365 sun.nio.ch.EPollArrayWrapper.epollWait
4 17.76% 71.09% 41628 301368 sun.nio.ch.EPollArrayWrapper.epollWait
5 17.75% 88.84% 41621 301364 sun.nio.ch.ServerSocketChannelImpl.accept0
6 3.33% 92.17% 7796 301634 sun.nio.ch.FileDispatcherImpl.write0
7 2.73% 94.89% 6390 301657 java.io.FileOutputStream.writeBytes
8 1.33% 96.22% 3113 301640 sun.nio.ch.FileDispatcherImpl.read0
9 1.30% 97.52% 3038 301631 org.apache.hadoop.util.NativeCrc32.nativeVerifyChunkedSums
10 0.33% 97.84% 766 301641 sun.nio.ch.FileDispatcherImpl.write0
Workload Java samples:
Datanode Java samples:
ASIA 2013 (LCA13)
www.linaro.org
New TestDFSIO write tests – More Samples
CPU SAMPLES BEGIN (total = 180508)
rank self accum count trace method
1 24.87% 24.87% 44890 301198 sun.nio.ch.EPollArrayWrapper.epollWait
2 24.82% 49.69% 44808 301337 sun.nio.ch.EPollArrayWrapper.epollWait
3 24.82% 74.51% 44806 301338 sun.nio.ch.EPollArrayWrapper.epollWait
4 24.81% 99.33% 44792 301334 sun.nio.ch.EPollArrayWrapper.epollWait
5 0.07% 99.40% 135 300075 java.lang.ClassLoader.defineClass1
6 0.03% 99.43% 46 300080 java.util.zip.ZipFile.getEntry
7 0.02% 99.45% 41 300079 java.util.zip.Inflater.inflateBytes
8 0.01% 99.47% 27 300548 java.io.FileInputStream.readBytes
9 0.01% 99.48% 24 301230 java.lang.UNIXProcess.waitForProcessExit
10 0.01% 99.49% 22 301145 sun.nio.ch.FileDispatcherImpl.force0
+ 18.04% java libhadoop.so.1.0.0 [.] fold
+ 14.38% java perf-16729.map [.] 0xb42c0840
+ 6.45% java libc-2.15.so [.] memcpy
+ 5.77% java [kernel.kallsyms] [k] __copy_from_user
+ 3.89% java [kernel.kallsyms] [k] __copy_to_user_std
+ 2.73% java perf-16647.map [.] 0xb4142560
+ 2.42% java [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore
+ 1.91% java libhadoop.so.1.0.0 [.] crc32c_sb8
+ 1.28% swapper [kernel.kallsyms] [k] finish_task_switch
+ 0.96% swapper [kernel.kallsyms] [k] tick_nohz_idle_enter
+ 0.88% java libhadoop.so.1.0.0 [.] crc32c_neon
Namenode Java samples:
Linux perf results:
ASIA 2013 (LCA13)
www.linaro.org
New TestDFSIO read tests – Some Samples
CPU SAMPLES BEGIN (total = 13997)
rank self accum count trace method
1 41.44% 41.44% 5800 301067 sun.nio.ch.EPollArrayWrapper.epollWait
2 25.40% 66.84% 3555 301075
org.apache.hadoop.util.NativeCrc32.nativeVerifyChunkedSums
3 13.15% 79.98% 1840 301074 sun.nio.ch.FileDispatcherImpl.read0
4 4.63% 84.61% 648 301076 sun.misc.Unsafe.copyMemory
5 2.22% 86.83% 311 301085 sun.nio.ch.SocketChannelImpl.isConnected
6 1.86% 88.70% 261 301077 sun.nio.ch.FileDispatcherImpl.read0
7 1.56% 90.26% 219 300827 sun.nio.ch.EPollArrayWrapper.epollWait
8 1.15% 91.41% 161 300790 sun.nio.ch.EPollArrayWrapper.epollWait
9 0.64% 92.05% 89 300072 java.lang.ClassLoader.defineClass1
10 0.61% 92.66% 86 301099 sun.nio.ch.SocketChannelImpl.isConnected
CPU SAMPLES BEGIN (total = 123308)
rank self accum count trace method
1 17.64% 17.64% 21751 301117 sun.nio.ch.EPollArrayWrapper.epollWait
2 17.59% 35.23% 21686 301307 sun.nio.ch.EPollArrayWrapper.epollWait
3 17.55% 52.78% 21643 301370 sun.nio.ch.EPollArrayWrapper.epollWait
4 17.55% 70.33% 21643 301371 sun.nio.ch.EPollArrayWrapper.epollWait
5 17.55% 87.88% 21640 301369 sun.nio.ch.ServerSocketChannelImpl.accept0
6 8.05% 95.93% 9930 301604 sun.nio.ch.FileChannelImpl.transferTo0
7 0.78% 96.71% 963 301567 java.io.FileInputStream.readBytes
8 0.49% 97.20% 604 301580 org.apache.hadoop.io.nativeio.NativeIO.posix_fadvise
9 0.26% 97.46% 320 301607 sun.nio.ch.FileDispatcherImpl.write0
10 0.22% 97.68% 268 301586 sun.nio.ch.EPollArrayWrapper.epollWait
Workload Java samples:
Datanode Java samples:
ASIA 2013 (LCA13)
www.linaro.org
New TestDFSIO read tests – More Samples
CPU SAMPLES BEGIN (total = 97523)
rank self accum count trace method
1 24.83% 24.83% 24218 301190 sun.nio.ch.EPollArrayWrapper.epollWait
2 24.72% 49.55% 24103 301336 sun.nio.ch.EPollArrayWrapper.epollWait
3 24.71% 74.26% 24101 301337 sun.nio.ch.EPollArrayWrapper.epollWait
4 24.71% 98.97% 24096 301335 sun.nio.ch.EPollArrayWrapper.epollWait
5 0.14% 99.11% 133 300073 java.lang.ClassLoader.defineClass1
6 0.05% 99.16% 50 300085 java.util.zip.ZipFile.getEntry
7 0.05% 99.20% 45 300078 java.util.zip.Inflater.inflateBytes
8 0.02% 99.22% 21 300081 java.util.zip.ZipFile.read
9 0.02% 99.25% 21 301135 sun.nio.ch.FileDispatcherImpl.force0
10 0.01% 99.26% 13 301128
org.apache.hadoop.hdfs.server.namenode.EditLogFileOutputStream.<clinit>
+ 20.63% java libhadoop.so.1.0.0 [.] fold
+ 10.89% java [kernel.kallsyms] [k] __copy_to_user_std
+ 6.58% java perf-15890.map [.] 0xb44417f8
+ 5.74% java perf-15818.map [.] 0xb41a8de0
+ 5.37% java libc-2.15.so [.] memcpy
+ 3.15% java libhadoop.so.1.0.0 [.] crc32c_sb8
+ 2.64% java [kernel.kallsyms] [k] kmap_high
+ 2.01% java [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore
+ 1.31% swapper [kernel.kallsyms] [k] default_idle
+ 1.30% java libhadoop.so.1.0.0 [.] crc32c_neon
+ 0.88% java [kernel.kallsyms] [k] get_page_from_freelist
Namenode Java samples:
Linux perf results:
More about Linaro Connect: www.linaro.org/connect/
More about Linaro: www.linaro.org/about/
More about Linaro engineering: www.linaro.org/engineering/
ASIA 2013 (LCA13)

More Related Content

What's hot

A Spark Framework For &lt; $100, &lt; 1 Hour, Accurate Personalized DNA Analy...
A Spark Framework For &lt; $100, &lt; 1 Hour, Accurate Personalized DNA Analy...A Spark Framework For &lt; $100, &lt; 1 Hour, Accurate Personalized DNA Analy...
A Spark Framework For &lt; $100, &lt; 1 Hour, Accurate Personalized DNA Analy...Spark Summit
 
Spark Based Distributed Deep Learning Framework For Big Data Applications
Spark Based Distributed Deep Learning Framework For Big Data Applications Spark Based Distributed Deep Learning Framework For Big Data Applications
Spark Based Distributed Deep Learning Framework For Big Data Applications Humoyun Ahmedov
 
Distributed Deep Learning with Apache Spark and TensorFlow with Jim Dowling
Distributed Deep Learning with Apache Spark and TensorFlow with Jim DowlingDistributed Deep Learning with Apache Spark and TensorFlow with Jim Dowling
Distributed Deep Learning with Apache Spark and TensorFlow with Jim DowlingDatabricks
 
Deep Learning with DL4J on Apache Spark: Yeah it’s Cool, but are You Doing it...
Deep Learning with DL4J on Apache Spark: Yeah it’s Cool, but are You Doing it...Deep Learning with DL4J on Apache Spark: Yeah it’s Cool, but are You Doing it...
Deep Learning with DL4J on Apache Spark: Yeah it’s Cool, but are You Doing it...Databricks
 
Introduction to Apache Spark
Introduction to Apache Spark Introduction to Apache Spark
Introduction to Apache Spark Hubert Fan Chiang
 
Apache Spark Introduction and Resilient Distributed Dataset basics and deep dive
Apache Spark Introduction and Resilient Distributed Dataset basics and deep diveApache Spark Introduction and Resilient Distributed Dataset basics and deep dive
Apache Spark Introduction and Resilient Distributed Dataset basics and deep diveSachin Aggarwal
 
Parallel Linear Regression in Interative Reduce and YARN
Parallel Linear Regression in Interative Reduce and YARNParallel Linear Regression in Interative Reduce and YARN
Parallel Linear Regression in Interative Reduce and YARNDataWorks Summit
 
Re-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityRe-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityJen Aman
 
Hadoop Spark Introduction-20150130
Hadoop Spark Introduction-20150130Hadoop Spark Introduction-20150130
Hadoop Spark Introduction-20150130Xuan-Chao Huang
 
Deep Learning with Spark and GPUs
Deep Learning with Spark and GPUsDeep Learning with Spark and GPUs
Deep Learning with Spark and GPUsDataWorks Summit
 
Introduction to Apache Spark Developer Training
Introduction to Apache Spark Developer TrainingIntroduction to Apache Spark Developer Training
Introduction to Apache Spark Developer TrainingCloudera, Inc.
 
Advanced Data Science on Spark-(Reza Zadeh, Stanford)
Advanced Data Science on Spark-(Reza Zadeh, Stanford)Advanced Data Science on Spark-(Reza Zadeh, Stanford)
Advanced Data Science on Spark-(Reza Zadeh, Stanford)Spark Summit
 
Let Spark Fly: Advantages and Use Cases for Spark on Hadoop
 Let Spark Fly: Advantages and Use Cases for Spark on Hadoop Let Spark Fly: Advantages and Use Cases for Spark on Hadoop
Let Spark Fly: Advantages and Use Cases for Spark on HadoopMapR Technologies
 
Marcel Kornacker: Impala tech talk Tue Feb 26th 2013
Marcel Kornacker: Impala tech talk Tue Feb 26th 2013Marcel Kornacker: Impala tech talk Tue Feb 26th 2013
Marcel Kornacker: Impala tech talk Tue Feb 26th 2013Modern Data Stack France
 
Lambda Architecture using Google Cloud plus Apps
Lambda Architecture using Google Cloud plus AppsLambda Architecture using Google Cloud plus Apps
Lambda Architecture using Google Cloud plus AppsSimon Su
 
Advanced spark deep learning
Advanced spark deep learningAdvanced spark deep learning
Advanced spark deep learningAdam Gibson
 
Introduction to Apache Spark Ecosystem
Introduction to Apache Spark EcosystemIntroduction to Apache Spark Ecosystem
Introduction to Apache Spark EcosystemBojan Babic
 

What's hot (20)

A Spark Framework For &lt; $100, &lt; 1 Hour, Accurate Personalized DNA Analy...
A Spark Framework For &lt; $100, &lt; 1 Hour, Accurate Personalized DNA Analy...A Spark Framework For &lt; $100, &lt; 1 Hour, Accurate Personalized DNA Analy...
A Spark Framework For &lt; $100, &lt; 1 Hour, Accurate Personalized DNA Analy...
 
myHadoop 0.30
myHadoop 0.30myHadoop 0.30
myHadoop 0.30
 
Spark Based Distributed Deep Learning Framework For Big Data Applications
Spark Based Distributed Deep Learning Framework For Big Data Applications Spark Based Distributed Deep Learning Framework For Big Data Applications
Spark Based Distributed Deep Learning Framework For Big Data Applications
 
Distributed Deep Learning with Apache Spark and TensorFlow with Jim Dowling
Distributed Deep Learning with Apache Spark and TensorFlow with Jim DowlingDistributed Deep Learning with Apache Spark and TensorFlow with Jim Dowling
Distributed Deep Learning with Apache Spark and TensorFlow with Jim Dowling
 
Deep Learning with DL4J on Apache Spark: Yeah it’s Cool, but are You Doing it...
Deep Learning with DL4J on Apache Spark: Yeah it’s Cool, but are You Doing it...Deep Learning with DL4J on Apache Spark: Yeah it’s Cool, but are You Doing it...
Deep Learning with DL4J on Apache Spark: Yeah it’s Cool, but are You Doing it...
 
Introduction to Apache Spark
Introduction to Apache Spark Introduction to Apache Spark
Introduction to Apache Spark
 
Apache Spark Introduction and Resilient Distributed Dataset basics and deep dive
Apache Spark Introduction and Resilient Distributed Dataset basics and deep diveApache Spark Introduction and Resilient Distributed Dataset basics and deep dive
Apache Spark Introduction and Resilient Distributed Dataset basics and deep dive
 
Parallel Linear Regression in Interative Reduce and YARN
Parallel Linear Regression in Interative Reduce and YARNParallel Linear Regression in Interative Reduce and YARN
Parallel Linear Regression in Interative Reduce and YARN
 
Re-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityRe-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance Understandability
 
Hadoop Spark Introduction-20150130
Hadoop Spark Introduction-20150130Hadoop Spark Introduction-20150130
Hadoop Spark Introduction-20150130
 
Deep Learning with Spark and GPUs
Deep Learning with Spark and GPUsDeep Learning with Spark and GPUs
Deep Learning with Spark and GPUs
 
Introduction to Apache Spark Developer Training
Introduction to Apache Spark Developer TrainingIntroduction to Apache Spark Developer Training
Introduction to Apache Spark Developer Training
 
Advanced Data Science on Spark-(Reza Zadeh, Stanford)
Advanced Data Science on Spark-(Reza Zadeh, Stanford)Advanced Data Science on Spark-(Reza Zadeh, Stanford)
Advanced Data Science on Spark-(Reza Zadeh, Stanford)
 
Let Spark Fly: Advantages and Use Cases for Spark on Hadoop
 Let Spark Fly: Advantages and Use Cases for Spark on Hadoop Let Spark Fly: Advantages and Use Cases for Spark on Hadoop
Let Spark Fly: Advantages and Use Cases for Spark on Hadoop
 
Hadoop and Spark
Hadoop and SparkHadoop and Spark
Hadoop and Spark
 
Marcel Kornacker: Impala tech talk Tue Feb 26th 2013
Marcel Kornacker: Impala tech talk Tue Feb 26th 2013Marcel Kornacker: Impala tech talk Tue Feb 26th 2013
Marcel Kornacker: Impala tech talk Tue Feb 26th 2013
 
Lambda Architecture using Google Cloud plus Apps
Lambda Architecture using Google Cloud plus AppsLambda Architecture using Google Cloud plus Apps
Lambda Architecture using Google Cloud plus Apps
 
Advanced spark deep learning
Advanced spark deep learningAdvanced spark deep learning
Advanced spark deep learning
 
Introduction to Apache Spark Ecosystem
Introduction to Apache Spark EcosystemIntroduction to Apache Spark Ecosystem
Introduction to Apache Spark Ecosystem
 
Apache Spark Architecture
Apache Spark ArchitectureApache Spark Architecture
Apache Spark Architecture
 

Similar to LCA13: Hadoop DFS Performance

Resource planning on the (Amazon) cloud
Resource planning on the (Amazon) cloudResource planning on the (Amazon) cloud
Resource planning on the (Amazon) cloudEnis Afgan
 
Testing Delphix: easy data virtualization
Testing Delphix: easy data virtualizationTesting Delphix: easy data virtualization
Testing Delphix: easy data virtualizationFranck Pachot
 
Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...
Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...
Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...Odinot Stanislas
 
Introduction to Hadoop part 2
Introduction to Hadoop part 2Introduction to Hadoop part 2
Introduction to Hadoop part 2Giovanna Roda
 
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...Flink Forward
 
Experience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's ViewExperience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's ViewPhuwadon D
 
Spark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersSpark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersDatabricks
 
Direct Code Execution - LinuxCon Japan 2014
Direct Code Execution - LinuxCon Japan 2014Direct Code Execution - LinuxCon Japan 2014
Direct Code Execution - LinuxCon Japan 2014Hajime Tazaki
 
Let's Compare: A Benchmark review of InfluxDB and Elasticsearch
Let's Compare: A Benchmark review of InfluxDB and ElasticsearchLet's Compare: A Benchmark review of InfluxDB and Elasticsearch
Let's Compare: A Benchmark review of InfluxDB and ElasticsearchInfluxData
 
Java File I/O Performance Analysis - Part I - JCConf 2018
Java File I/O Performance Analysis - Part I - JCConf 2018Java File I/O Performance Analysis - Part I - JCConf 2018
Java File I/O Performance Analysis - Part I - JCConf 2018Michael Fong
 
DrupalCampLA 2011: Drupal backend-performance
DrupalCampLA 2011: Drupal backend-performanceDrupalCampLA 2011: Drupal backend-performance
DrupalCampLA 2011: Drupal backend-performanceAshok Modi
 
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...Nagios
 
Node Interactive Debugging Node.js In Production
Node Interactive Debugging Node.js In ProductionNode Interactive Debugging Node.js In Production
Node Interactive Debugging Node.js In ProductionYunong Xiao
 
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...Виталий Стародубцев
 
Resource-Efficient Deep Learning Model Selection on Apache Spark
Resource-Efficient Deep Learning Model Selection on Apache SparkResource-Efficient Deep Learning Model Selection on Apache Spark
Resource-Efficient Deep Learning Model Selection on Apache SparkDatabricks
 
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebula Project
 

Similar to LCA13: Hadoop DFS Performance (20)

Hadoop Vectored IO
Hadoop Vectored IOHadoop Vectored IO
Hadoop Vectored IO
 
Resource planning on the (Amazon) cloud
Resource planning on the (Amazon) cloudResource planning on the (Amazon) cloud
Resource planning on the (Amazon) cloud
 
Testing Delphix: easy data virtualization
Testing Delphix: easy data virtualizationTesting Delphix: easy data virtualization
Testing Delphix: easy data virtualization
 
Ceph
CephCeph
Ceph
 
Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...
Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...
Ceph: Open Source Storage Software Optimizations on Intel® Architecture for C...
 
Introduction to Hadoop part 2
Introduction to Hadoop part 2Introduction to Hadoop part 2
Introduction to Hadoop part 2
 
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
 
Experience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's ViewExperience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's View
 
Demo 0.9.4
Demo 0.9.4Demo 0.9.4
Demo 0.9.4
 
Spark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersSpark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production users
 
Direct Code Execution - LinuxCon Japan 2014
Direct Code Execution - LinuxCon Japan 2014Direct Code Execution - LinuxCon Japan 2014
Direct Code Execution - LinuxCon Japan 2014
 
Let's Compare: A Benchmark review of InfluxDB and Elasticsearch
Let's Compare: A Benchmark review of InfluxDB and ElasticsearchLet's Compare: A Benchmark review of InfluxDB and Elasticsearch
Let's Compare: A Benchmark review of InfluxDB and Elasticsearch
 
How swift is your Swift - SD.pptx
How swift is your Swift - SD.pptxHow swift is your Swift - SD.pptx
How swift is your Swift - SD.pptx
 
Java File I/O Performance Analysis - Part I - JCConf 2018
Java File I/O Performance Analysis - Part I - JCConf 2018Java File I/O Performance Analysis - Part I - JCConf 2018
Java File I/O Performance Analysis - Part I - JCConf 2018
 
DrupalCampLA 2011: Drupal backend-performance
DrupalCampLA 2011: Drupal backend-performanceDrupalCampLA 2011: Drupal backend-performance
DrupalCampLA 2011: Drupal backend-performance
 
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
 
Node Interactive Debugging Node.js In Production
Node Interactive Debugging Node.js In ProductionNode Interactive Debugging Node.js In Production
Node Interactive Debugging Node.js In Production
 
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
 
Resource-Efficient Deep Learning Model Selection on Apache Spark
Resource-Efficient Deep Learning Model Selection on Apache SparkResource-Efficient Deep Learning Model Selection on Apache Spark
Resource-Efficient Deep Learning Model Selection on Apache Spark
 
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
 

More from Linaro

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloLinaro
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaLinaro
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraLinaro
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaLinaro
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018Linaro
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Linaro
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteLinaro
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allLinaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorLinaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMULinaro
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MLinaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootLinaro
 

More from Linaro (20)

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 

Recently uploaded

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 

Recently uploaded (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 

LCA13: Hadoop DFS Performance

  • 1. ASIA 2013 (LCA13) LEG – Hadoop DFS Performance Steve Capper <steve.capper@linaro.org>
  • 2. ASIA 2013 (LCA13) www.linaro.org Hadoop Performance on ARM I concentrated on reducing the time taken for CPU bound tasks (the latency). My work, so far, has focussed on the underlying cluster filesystem, HDFS, as this underpins a lot of Hadoop workloads. The latest release-tagged Hadoop at the time of experimentation was 2.0.2-alpha. So this was the version used. (2.0.3-alpha has just come out). Hadoop installations consist of rather a lot of moving parts. So please let me know if I should be concentrating on something else! :-)
  • 3. ASIA 2013 (LCA13) www.linaro.org Hadoop Distributed Filesystem – Overview HDFS is the default Hadoop distributed filesystem. Consists of multiple “nodes”: Namenode – holds the metadata for the filesystem and keeps track of the datanodes. Only one namenode is active at a time per namespace. Thus there is a high memory requirement for a namenode. Datanodes – store the file's blocks. The default block size is 64MB. (Optional) Passive namenodes – To maintain an High Availability configuration, one can set up shared storage (via NFS or by journalnodes) and have namenodes on standby to failover. Filesystem blocks are replicated between datanodes. Datanodes can be “rack aware”; data will be distributed between racks. Nodes can run on the same machine or on different machines.
  • 4. ASIA 2013 (LCA13) www.linaro.org Data Integrity in HDFS Hadoop mitigates against hardware failure in the following ways: Metadata can be saved to multiple filesystems and regular snapshots are usually taken to allow for disaster recovery. On some HA configurations, multiple journalnodes maintain a quorum of the metadata. Data blocks are replicated across multiple datanodes (preferably to different racks). Data blocks are regularly transmitted: All data streams are checksummed. The default checksum algorithm is CRC32c. The default number of bytes per checksum is 512 bytes.
  • 5. ASIA 2013 (LCA13) www.linaro.org Test Configuration So far I have been micro-benchmarking single machine workloads (1 name node, 1 data node, 1 workload). I have been working on an A9 platform. TestDFSIO -read and -write have been tested with a 10GB filesize. Soft-float Oracle JDK 1.7.0_10 was used. Performance was measured using Linux perf -a, Java samples were taken with the inbuilt profiler: -Xrunhprof:cpu=samples,depth=10
  • 6. ASIA 2013 (LCA13) www.linaro.org Plain TestDFSIO write tests – Samples CPU SAMPLES BEGIN (total = 164879) rank self accum count trace method 1 24.85% 24.85% 40970 301219 sun.nio.ch.EPollArrayWrapper.epollWait 2 24.79% 49.64% 40870 301362 sun.nio.ch.EPollArrayWrapper.epollWait 3 24.79% 74.42% 40866 301363 sun.nio.ch.EPollArrayWrapper.epollWait 4 24.78% 99.20% 40859 301358 sun.nio.ch.EPollArrayWrapper.epollWait 5 0.07% 99.27% 118 300073 java.lang.ClassLoader.defineClass1 6 0.03% 99.31% 57 300020 java.util.zip.ZipFile.open 7 0.03% 99.34% 55 300179 java.util.zip.ZipFile.getEntry 8 0.03% 99.38% 54 300062 java.util.zip.ZipFile.read 9 0.02% 99.39% 31 300076 java.util.zip.Inflater.inflateBytes 10 0.01% 99.41% 23 301165 sun.nio.ch.FileDispatcherImpl.force0 + 33.80% java perf-13641.map [.] 0xb4258538 + 19.98% java perf-13534.map [.] 0xb403e980 + 5.37% java libc-2.15.so [.] memcpy + 3.02% java [kernel.kallsyms] [k] __copy_from_user + 2.60% java [kernel.kallsyms] [k] __copy_to_user_std + 1.86% java [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore + 1.01% swapper [kernel.kallsyms] [k] finish_task_switch + 0.66% swapper [kernel.kallsyms] [k] tick_nohz_idle_enter + 0.55% java [kernel.kallsyms] [k] get_page_from_freelist + 0.44% java [kernel.kallsyms] [k] free_hot_cold_page + 0.42% swapper [kernel.kallsyms] [k] default_idle Namenode Java samples: Linux perf results:
  • 7. ASIA 2013 (LCA13) www.linaro.org Plain TestDFSIO read & write CPU usage Plain TestDFSIO Write Plain TestDFSIO Read Other Java memcpy crc32c_sb8
  • 8. ASIA 2013 (LCA13) www.linaro.org Some analysis of plain TestDFSIO The namenode doesn't do much when it's in charge of 1 datanode. (this will change when things scale up). When writing data: Most of the Java time is spent in PureJavaCrc32C.update Most of the CPU time is spent in Java land. When reading data: Most of the Java time is spent in NativeCrc32.nativeVerifyChunkedSums. Most of the CPU time is in the native function: crc32c_sb8 For both reading and writing data: ~10% of the CPU time is spent copying memory.
  • 9. ASIA 2013 (LCA13) www.linaro.org Optimising the read and write paths Trevor Robinson has proposed a patch to improve the write path: HDFS-3529 “Use direct buffers for data in write path” I have been working on speeding up the computation of CRC32c checksums, by using NEON. Also, I've performed some very preliminary experiments on replacing PureJavaCrc32C with a JNI class that references the NEON CRC code.
  • 10. ASIA 2013 (LCA13) www.linaro.org NEON optimisation of the CRC32c algorithm I worked on an algorithm Q4 last year: https://wiki.linaro.org/LEG/Engineering/CRC Given an input buffer, we perform polynomial multiplication and addition to give a slighter smaller buffer with the same CRC. This is referred to as “folding”. The algorithm reduced the buffer by 32 bytes at a time. The final buffer of 32 bytes was then processed by slice-by-8 as normal. I found that the vast majority of CRCs in Hadoop (in both NativeCrc32.nativeVerifyChunkedSums and PureJavaCrc32C.update) were computed for 512 byte buffers.
  • 11. ASIA 2013 (LCA13) www.linaro.org A single 64 bit fold 32 64 64 M(x)32 A(x)B(x) 64 =A(x) * (x^64 mod P(x)) =B(x) * (x^96 mod P(x)) M'(x) + + 64 CRC(M'(x)) = CRC(M(x)) =
  • 12. ASIA 2013 (LCA13) www.linaro.org NEON implementations With ARMv7 NEON we can only perform polynomial multiplication on 8 bit lanes: We need to be able to multiply at least 32 bits, thus multiple vmull.p8's were chained together to achieve this). There are 16 vmull.p8's per fold, so a little register pressure! A gcc intrinsic version has been coded up: This is considerably simpler to look at. Unfortunately, it runs a little slower than hand-optimised assembler. A test case has been sent to the Linaro Toolchain Working group (a couple of weeks ago) and this is being analysed by them.
  • 13. ASIA 2013 (LCA13) www.linaro.org Replacing PureJavaCrc32C PureJavaCrc32C has two noteworthy methods: public void update(byte[] b, int off, int len) – called mostly for lengths of 512. public void update(int b) – seldom called. I created a new class implementing the Checksum interface that: Used the same implementation of: update(int b) as PureJavaCrc32C. Called straight into JNI for update(byte[] b, int off, int len). The class name NativeCrc32 was already taken by something else, so I chose a rather silly temporary name: HyperCrc32C
  • 14. ASIA 2013 (LCA13) www.linaro.org Dealing with byte [] in JNI We are only reading from the byte[] array, and only for a very short time. Thus I pinned the buffer in memory with: GetPrimitiveArrayCritical Then subsequently released the buffer with ReleasePrimitiveArrayCritical(..., JNI_ABORT) This worked for me, but perhaps a better long term solution would be to change the backing data type to a ByteBuffer? We could also be clever and change the alignment of these? Rather than test every optimisation individually in this talk; I am going to put them all together.
  • 15. ASIA 2013 (LCA13) www.linaro.org TestDFSIO read & write CPU usage Plain TestDFSIO Write New TestDFSIO Write Other Java memcpy crc Plain TestDFSIO Read New TestDFSIO Read
  • 16. ASIA 2013 (LCA13) www.linaro.org Some Analysis of the New TestDFSIO runs The name node samples are unchanged. For the write path: Most of the time is now spent running native code rather than Java code. There is a noticeable reduction in Hadoop user CPU usage. For the read path: Most of the time is still spent running native code. There is again a reduction in Hadoop user CPU usage. For both the read and write paths there is a significant amount of CPU time spent copying memory around.
  • 17. ASIA 2013 (LCA13) www.linaro.org Conclusions and Further Work The CPU usage required for TestDFSIO runs has been reduced for both read/write paths. This gives us more CPU cycles to run Hadoop jobs with! Hadoop is known to be very sensitive to underlying disk IO. To optimise HDFS IO, it would make sense to optimise disk/filesystem IO as much as possible and re-run these benchmarks. As Hadoop runs under Java: It makes sense to keep track of JVMs. A beta hard-float JVM has been released. The CPU usage for memcpy is making me uneasy!
  • 18. ASIA 2013 (LCA13) www.linaro.org We should also consider our hardware... HDD SSD 0 0.5 1 1.5 2 2.5 TestDFSIO Write Relative performance MB/s HDD SSD 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 TestDFSIO Read Relative performance MB/s
  • 19. ASIA 2013 (LCA13) www.linaro.org Plain TestDFSIO write tests – Some Samples CPU SAMPLES BEGIN (total = 81097) rank self accum count trace method 1 36.88% 36.88% 29906 300854 sun.nio.ch.EPollArrayWrapper.epollWait 2 32.95% 69.83% 26723 301107 sun.nio.ch.EPollArrayWrapper.epollWait 3 16.48% 86.31% 13363 301109 org.apache.hadoop.util.PureJavaCrc32C.update 4 2.74% 89.05% 2225 301113 sun.misc.Unsafe.copyMemory 5 1.67% 90.72% 1357 301115 sun.nio.ch.FileDispatcherImpl.write0 6 1.09% 91.81% 884 301128 org.apache.hadoop.hdfs.DFSOutputStream.writeChunk 7 0.70% 92.51% 564 301110 sun.nio.ch.FileDispatcherImpl.read0 8 0.42% 92.93% 342 301123 org.apache.hadoop.hdfs.DFSOutputStream.writeChunk 9 0.40% 93.33% 326 301202 org.apache.hadoop.hdfs.DFSOutputStream.waitAndQueueCurrentPacket 10 0.33% 93.66% 266 301124 java.lang.System.arraycopy CPU SAMPLES BEGIN (total = 227245) rank self accum count trace method 1 16.85% 16.85% 38293 301110 sun.nio.ch.EPollArrayWrapper.epollWait 2 16.82% 33.67% 38228 301313 sun.nio.ch.EPollArrayWrapper.epollWait 3 16.80% 50.48% 38184 301374 sun.nio.ch.EPollArrayWrapper.epollWait 4 16.80% 67.28% 38184 301375 sun.nio.ch.EPollArrayWrapper.epollWait 5 16.80% 84.08% 38169 301373 sun.nio.ch.ServerSocketChannelImpl.accept0 6 6.75% 90.83% 15342 301646 java.io.FileOutputStream.writeBytes 7 2.77% 93.60% 6294 301642 org.apache.hadoop.util.DataChecksum.verifyChunkedSums 8 2.49% 96.08% 5653 301664 java.io.FileOutputStream.writeBytes 9 1.14% 97.22% 2587 301640 sun.nio.ch.FileDispatcherImpl.read0 10 0.35% 97.57% 798 301691 sun.nio.ch.FileDispatcherImpl.write0 Workload Java samples: Datanode Java samples:
  • 20. ASIA 2013 (LCA13) www.linaro.org Plain TestDFSIO read tests – Some Samples CPU SAMPLES BEGIN (total = 13668) rank self accum count trace method 1 36.82% 36.82% 5033 301083 org.apache.hadoop.util.NativeCrc32.nativeVerifyChunkedSums 2 31.37% 68.19% 4287 301080 sun.nio.ch.EPollArrayWrapper.epollWait 3 14.00% 82.18% 1913 301086 sun.nio.ch.FileDispatcherImpl.read0 4 4.82% 87.01% 659 301082 sun.misc.Unsafe.copyMemory 5 2.00% 89.00% 273 301118 sun.nio.ch.SocketChannelImpl.isConnected 6 1.87% 90.88% 256 301089 sun.nio.ch.FileDispatcherImpl.read0 7 0.76% 91.64% 104 300072 java.lang.ClassLoader.defineClass1 8 0.61% 92.25% 84 301105 sun.nio.ch.SocketChannelImpl.isConnected 9 0.51% 92.76% 70 300841 sun.nio.ch.EPollArrayWrapper.epollWait 10 0.49% 93.25% 67 301127 sun.misc.Unsafe.copyMemory CPU SAMPLES BEGIN (total = 118437) rank self accum count trace method 1 17.57% 17.57% 20810 301107 sun.nio.ch.EPollArrayWrapper.epollWait 2 17.51% 35.08% 20741 301304 sun.nio.ch.EPollArrayWrapper.epollWait 3 17.48% 52.56% 20697 301368 sun.nio.ch.EPollArrayWrapper.epollWait 4 17.48% 70.03% 20697 301369 sun.nio.ch.EPollArrayWrapper.epollWait 5 17.47% 87.51% 20695 301367 sun.nio.ch.ServerSocketChannelImpl.accept0 6 8.71% 96.22% 10320 301593 sun.nio.ch.FileChannelImpl.transferTo0 7 0.48% 96.70% 569 301524 org.apache.hadoop.io.nativeio.NativeIO.posix_fadvise 8 0.40% 97.10% 471 301388 sun.nio.ch.EPollArrayWrapper.epollWait 9 0.31% 97.41% 364 301595 sun.nio.ch.FileDispatcherImpl.write0 10 0.29% 97.69% 339 301648 java.io.FileInputStream.readBytes Workload Java samples: Datanode Java samples:
  • 21. ASIA 2013 (LCA13) www.linaro.org Plain TestDFSIO read tests – More Samples CPU SAMPLES BEGIN (total = 92048) rank self accum count trace method 1 24.81% 24.81% 22833 301222 sun.nio.ch.EPollArrayWrapper.epollWait 2 24.68% 49.48% 22715 301361 sun.nio.ch.EPollArrayWrapper.epollWait 3 24.68% 74.16% 22713 301362 sun.nio.ch.EPollArrayWrapper.epollWait 4 24.67% 98.83% 22708 301360 sun.nio.ch.EPollArrayWrapper.epollWait 5 0.16% 98.99% 147 300075 java.lang.ClassLoader.defineClass1 6 0.05% 99.04% 47 300084 java.util.zip.ZipFile.getEntry 7 0.03% 99.07% 32 300078 java.util.zip.Inflater.inflateBytes 8 0.03% 99.11% 30 300123 java.util.zip.ZipFile.read 9 0.02% 99.13% 21 301170 sun.nio.ch.FileDispatcherImpl.force0 10 0.02% 99.15% 16 301165 org.apache.hadoop.hdfs.server.namenode.EditLogFileOutputStream.<clinit> + 36.37% java libhadoop.so.1.0.0 [.] crc32c_sb8 + 9.40% java [kernel.kallsyms] [k] __copy_to_user_std + 6.02% java perf-14362.map [.] 0xb40d5040 + 5.52% java perf-15039.map [.] 0xb440aba0 + 4.92% java libc-2.15.so [.] memcpy + 2.09% java [kernel.kallsyms] [k] kmap_high + 1.51% java [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore + 1.10% swapper [kernel.kallsyms] [k] default_idle + 0.70% kswapd0 [kernel.kallsyms] [k] __remove_mapping + 0.68% java [kernel.kallsyms] [k] get_page_from_freelist Namenode Java samples: Linux perf results:
  • 22. ASIA 2013 (LCA13) www.linaro.org New TestDFSIO write tests – Some Samples CPU SAMPLES BEGIN (total = 52774) rank self accum count trace method 1 38.67% 38.67% 20407 300839 sun.nio.ch.EPollArrayWrapper.epollWait 2 32.56% 71.23% 17184 301074 sun.nio.ch.EPollArrayWrapper.epollWait 3 11.51% 82.74% 6076 301070 org.apache.hadoop.util.HyperCrc32C.nativeUpdate 4 4.14% 86.88% 2184 301071 sun.misc.Unsafe.copyMemory 5 2.69% 89.57% 1419 301076 sun.nio.ch.FileDispatcherImpl.write0 6 0.65% 90.22% 341 301102 sun.nio.ch.FileDispatcherImpl.read0 7 0.45% 90.67% 240 301143 java.lang.System.arraycopy 8 0.44% 91.11% 231 300804 sun.nio.ch.EPollArrayWrapper.epollWait 9 0.38% 91.49% 203 301154 sun.nio.ch.EPollArrayWrapper.epollCtl 10 0.38% 91.88% 202 301080 org.apache.hadoop.hdfs.DFSOutputStream.writeChunk CPU SAMPLES BEGIN (total = 234447) rank self accum count trace method 1 17.80% 17.80% 41734 301113 sun.nio.ch.EPollArrayWrapper.epollWait 2 17.77% 35.58% 41672 301307 sun.nio.ch.EPollArrayWrapper.epollWait 3 17.76% 53.33% 41629 301365 sun.nio.ch.EPollArrayWrapper.epollWait 4 17.76% 71.09% 41628 301368 sun.nio.ch.EPollArrayWrapper.epollWait 5 17.75% 88.84% 41621 301364 sun.nio.ch.ServerSocketChannelImpl.accept0 6 3.33% 92.17% 7796 301634 sun.nio.ch.FileDispatcherImpl.write0 7 2.73% 94.89% 6390 301657 java.io.FileOutputStream.writeBytes 8 1.33% 96.22% 3113 301640 sun.nio.ch.FileDispatcherImpl.read0 9 1.30% 97.52% 3038 301631 org.apache.hadoop.util.NativeCrc32.nativeVerifyChunkedSums 10 0.33% 97.84% 766 301641 sun.nio.ch.FileDispatcherImpl.write0 Workload Java samples: Datanode Java samples:
  • 23. ASIA 2013 (LCA13) www.linaro.org New TestDFSIO write tests – More Samples CPU SAMPLES BEGIN (total = 180508) rank self accum count trace method 1 24.87% 24.87% 44890 301198 sun.nio.ch.EPollArrayWrapper.epollWait 2 24.82% 49.69% 44808 301337 sun.nio.ch.EPollArrayWrapper.epollWait 3 24.82% 74.51% 44806 301338 sun.nio.ch.EPollArrayWrapper.epollWait 4 24.81% 99.33% 44792 301334 sun.nio.ch.EPollArrayWrapper.epollWait 5 0.07% 99.40% 135 300075 java.lang.ClassLoader.defineClass1 6 0.03% 99.43% 46 300080 java.util.zip.ZipFile.getEntry 7 0.02% 99.45% 41 300079 java.util.zip.Inflater.inflateBytes 8 0.01% 99.47% 27 300548 java.io.FileInputStream.readBytes 9 0.01% 99.48% 24 301230 java.lang.UNIXProcess.waitForProcessExit 10 0.01% 99.49% 22 301145 sun.nio.ch.FileDispatcherImpl.force0 + 18.04% java libhadoop.so.1.0.0 [.] fold + 14.38% java perf-16729.map [.] 0xb42c0840 + 6.45% java libc-2.15.so [.] memcpy + 5.77% java [kernel.kallsyms] [k] __copy_from_user + 3.89% java [kernel.kallsyms] [k] __copy_to_user_std + 2.73% java perf-16647.map [.] 0xb4142560 + 2.42% java [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore + 1.91% java libhadoop.so.1.0.0 [.] crc32c_sb8 + 1.28% swapper [kernel.kallsyms] [k] finish_task_switch + 0.96% swapper [kernel.kallsyms] [k] tick_nohz_idle_enter + 0.88% java libhadoop.so.1.0.0 [.] crc32c_neon Namenode Java samples: Linux perf results:
  • 24. ASIA 2013 (LCA13) www.linaro.org New TestDFSIO read tests – Some Samples CPU SAMPLES BEGIN (total = 13997) rank self accum count trace method 1 41.44% 41.44% 5800 301067 sun.nio.ch.EPollArrayWrapper.epollWait 2 25.40% 66.84% 3555 301075 org.apache.hadoop.util.NativeCrc32.nativeVerifyChunkedSums 3 13.15% 79.98% 1840 301074 sun.nio.ch.FileDispatcherImpl.read0 4 4.63% 84.61% 648 301076 sun.misc.Unsafe.copyMemory 5 2.22% 86.83% 311 301085 sun.nio.ch.SocketChannelImpl.isConnected 6 1.86% 88.70% 261 301077 sun.nio.ch.FileDispatcherImpl.read0 7 1.56% 90.26% 219 300827 sun.nio.ch.EPollArrayWrapper.epollWait 8 1.15% 91.41% 161 300790 sun.nio.ch.EPollArrayWrapper.epollWait 9 0.64% 92.05% 89 300072 java.lang.ClassLoader.defineClass1 10 0.61% 92.66% 86 301099 sun.nio.ch.SocketChannelImpl.isConnected CPU SAMPLES BEGIN (total = 123308) rank self accum count trace method 1 17.64% 17.64% 21751 301117 sun.nio.ch.EPollArrayWrapper.epollWait 2 17.59% 35.23% 21686 301307 sun.nio.ch.EPollArrayWrapper.epollWait 3 17.55% 52.78% 21643 301370 sun.nio.ch.EPollArrayWrapper.epollWait 4 17.55% 70.33% 21643 301371 sun.nio.ch.EPollArrayWrapper.epollWait 5 17.55% 87.88% 21640 301369 sun.nio.ch.ServerSocketChannelImpl.accept0 6 8.05% 95.93% 9930 301604 sun.nio.ch.FileChannelImpl.transferTo0 7 0.78% 96.71% 963 301567 java.io.FileInputStream.readBytes 8 0.49% 97.20% 604 301580 org.apache.hadoop.io.nativeio.NativeIO.posix_fadvise 9 0.26% 97.46% 320 301607 sun.nio.ch.FileDispatcherImpl.write0 10 0.22% 97.68% 268 301586 sun.nio.ch.EPollArrayWrapper.epollWait Workload Java samples: Datanode Java samples:
  • 25. ASIA 2013 (LCA13) www.linaro.org New TestDFSIO read tests – More Samples CPU SAMPLES BEGIN (total = 97523) rank self accum count trace method 1 24.83% 24.83% 24218 301190 sun.nio.ch.EPollArrayWrapper.epollWait 2 24.72% 49.55% 24103 301336 sun.nio.ch.EPollArrayWrapper.epollWait 3 24.71% 74.26% 24101 301337 sun.nio.ch.EPollArrayWrapper.epollWait 4 24.71% 98.97% 24096 301335 sun.nio.ch.EPollArrayWrapper.epollWait 5 0.14% 99.11% 133 300073 java.lang.ClassLoader.defineClass1 6 0.05% 99.16% 50 300085 java.util.zip.ZipFile.getEntry 7 0.05% 99.20% 45 300078 java.util.zip.Inflater.inflateBytes 8 0.02% 99.22% 21 300081 java.util.zip.ZipFile.read 9 0.02% 99.25% 21 301135 sun.nio.ch.FileDispatcherImpl.force0 10 0.01% 99.26% 13 301128 org.apache.hadoop.hdfs.server.namenode.EditLogFileOutputStream.<clinit> + 20.63% java libhadoop.so.1.0.0 [.] fold + 10.89% java [kernel.kallsyms] [k] __copy_to_user_std + 6.58% java perf-15890.map [.] 0xb44417f8 + 5.74% java perf-15818.map [.] 0xb41a8de0 + 5.37% java libc-2.15.so [.] memcpy + 3.15% java libhadoop.so.1.0.0 [.] crc32c_sb8 + 2.64% java [kernel.kallsyms] [k] kmap_high + 2.01% java [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore + 1.31% swapper [kernel.kallsyms] [k] default_idle + 1.30% java libhadoop.so.1.0.0 [.] crc32c_neon + 0.88% java [kernel.kallsyms] [k] get_page_from_freelist Namenode Java samples: Linux perf results:
  • 26. More about Linaro Connect: www.linaro.org/connect/ More about Linaro: www.linaro.org/about/ More about Linaro engineering: www.linaro.org/engineering/ ASIA 2013 (LCA13)