jnuma library

4
Silk Weaver: A Scalable Data Processing Platform JNuma library Java/ScalaでNUMA aware アクセスを実現するためのライブラリ 2012年11月に作成・公開済み https:// github.com/xerial/jnuma JavaからJNI経由でNUMA APIを呼び出す 機能 特定のNUMA node (メモリ)でバッファを確保 GCの管理対象外領域なので、Numa.freeを実行した瞬間に解放される (JVMがメモリを食い尽くすのを防ぐ) Threadを特定のCPU(s)に固定する Javaにはない機能 1

Upload: taro-l-saito

Post on 15-Jul-2015

267 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: JNuma Library

Silk Weaver: A Scalable Data Processing Platform

JNuma library

Java/ScalaでNUMA aware アクセスを実現するためのライブラリ

2012年11月に作成・公開済み

https://github.com/xerial/jnuma

JavaからJNI経由でNUMA APIを呼び出す

機能

特定のNUMA node (メモリ)でバッファを確保

GCの管理対象外領域なので、Numa.freeを実行した瞬間に解放される (JVMがメモリを食い尽くすのを防ぐ)

Threadを特定のCPU(s)に固定する

Javaにはない機能

1

Page 2: JNuma Library

Silk Weaver: A Scalable Data Processing Platform

Distance and CPU affinity of NUMA nodes

2

Page 3: JNuma Library

Silk Weaver: A Scalable Data Processing Platform

NUMA-Aware Data Output

実験

1GBのメモリを各CPUが確保

各CPUはメモリの先頭から順にランダムなデータを書き込む

各Threadに固定CPUを1つ割り当てて実行

Numa.setAffinity(cpu#)

jnuma libraryを使用

比較

NUMA localにデータを書き出す場合 (numa)

NUMAを気にせずJVMのheapに書き出す場合 (heap)

マシン

ax03 (48CPUs, 256GB memory)

結果

numa-localな書き込みは性能が安定するが、heapに書き込む場合は、遅くなる

heapへの書き出しではCPU使用率が極端に低くなる

=> memory I/O bound

3

Page 4: JNuma Library

Silk Weaver: A Scalable Data Processing Platform

JVM –XX:+UseNUMA

JVMの-XX:+UseNUMA オプションを使うとheapの場合に多少速くなるが、それでもnuma-localの方が速い

4