Weitere ähnliche Inhalte
Ähnlich wie JNuma Library (6)
Mehr von Taro L. Saito (15)
JNuma Library
- 1. 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
- 2. Silk Weaver: A Scalable Data Processing Platform
Distance and CPU affinity of NUMA nodes
2
- 3. 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
- 4. Silk Weaver: A Scalable Data Processing Platform
JVM –XX:+UseNUMA
JVMの-XX:+UseNUMA オプションを使うとheapの場合に多少速くなるが、それでも
numa-localの方が速い
4