More Related Content
Introduction to arm virtualization Next-L Enju 開発ワークショップ #10 エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17) JSAI 2020 1J5-GS-2-01 TensorShader 高次元ニューラルネットワーク深層学習フレームワーク What's hot (19)
Technical session 2 iaa s 始めました~自社内にある windows も linux もそして sql server も azur... Fabric + Amazon EC2で快適サポート生活 #PyFes Introducing mroonga 20111129 Wakayama.rbボード Ver UmeJam Viewers also liked (12)
Relational-Style XML Query @ SIGMOD-J 2008 Dec. 2011年度 生物データベース論 2日目 木構造データ Presto @ Treasure Data - Presto Meetup Boston 2015 Streaming Distributed Data Processing with Silk #deim2014 Workflow Hacks #1 - dots. Tokyo Introduction to Presto at Treasure Data Presto as a Service - Tips for operation and monitoring Weaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo Presto As A Service - Treasure DataでのPresto運用事例 Spark Internals - Hadoop Source Code Reading #16 in Japan Treasure Dataを支える技術 - MessagePack編 More from Taro L. Saito (15)
Unifying Frontend and Backend Development with Scala - ScalaCon 2021 Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020 Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020 td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020 Airframe Meetup #3: 2019 Updates & AirSpec Presto At Arm Treasure Data - 2019 Updates Reading The Source Code of Presto How To Use Scala At Work - Airframe In Action at Arm Treasure Data Airframe: Lightweight Building Blocks for Scala - Scale By The Bay 2018 Airframe: Lightweight Building Blocks for Scala @ TD Tech Talk 2018-10-17 Tips For Maintaining OSS Projects Learning Silicon Valley Culture 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