ななめ45°から見たJavaOne

2,219
-1

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,219
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

ななめ45°から見たJavaOne

  1. 1. ~ネイティブな世界に注目して~2011/11/14末永 恭正 ( @YaSuenag )
  2. 2. 自己紹介 すえなが やすまさ 末永 恭正(@YaSuenag) NTT OSSセンタ勤務 ◦ Javaの障害解析、Q&A対応  合言葉は「Javaいい子だから!」  hs_errログやコアの解析  Javaとlibc、Linuxカーネルの間を行ったり来たり… ◦ たま~にOpenJDKのパッチ書いてます 根っからのサンデープログラマー ◦ Object Pascal (Delphi) 大好き ◦ CとJavaも好き ◦ アセンブラも結構好き JavaOne歴:2年(2010 & 2011)
  3. 3. JavaOneで感じたこと 求められるスキルの2極化 (EE vs SE) ◦ EE  とりあえず「クラウド」  とにかく「ポータビリティ」!  EoD対 ◦ SE極  とりあえず「並列化」  マルチリンガル?なVMの実現  VMの作りや動きを意識  究極を目指すなら、マシンを意識した領域へ…今回の注目ポイント!
  4. 4. まずは事例から…
  5. 5. みんなどうしてる?Tuning Twitterの場合時間切れ
  6. 6. みんなどうしてる?Tuning Twitterの場合 !!! java.lang.Integer (32bit)
  7. 7. みんなどうしてる?Tuning  Twitterの場合 ◦ GCのチューニングをきめ細かく実施 ◦ GCコストを下げるため、VM内部のC++オブジェクト表現 (oop)まで意識  クラスの継承関係やフィールドの型・数から、実際の消費メモリ 量を見積もりメモリ負荷を考え抜いたチューニング
  8. 8. みんなどうしてる?Tuning Goldman Sachsの場合
  9. 9. みんなどうしてる?Tuning Goldman Sachsの場合 ◦ hsdisを使ったディスアセンブル http://wikis.sun.com/display/HotSpotInternals/PrintAssemblyスカラ演算…
  10. 10. みんなどうしてる?Tuning Goldman Sachsの場合 ◦ ハードウェア関連情報のチェック  キャッシュのミスヒット(CPUキャッシュ・TLBなど)  etc…
  11. 11. みんなどうしてる?Tuning Goldman Sachsの場合 ◦ Large Page
  12. 12. みんなどうしてる?Tuning  Goldman Sachsの場合 ◦ OSやハードウェアまで含む最適化 ◦ JVMのハードウェア最適化を信頼しながらも、さらなる ファインチューニング  メモリアクセス  命令コード「ナノ秒レベル」のチューニング
  13. 13. ※GC以外ななめ45°下からチューニングポイントを覗き見る
  14. 14. その1: Superword 単純なベクトル化 SSE / AVX命令を有効活用できるはず ◦ プロセッサの本領発揮! JDK7 RIにもUseSuperWordが存在するが、ベクトル化 の実装のみ
  15. 15. その1: Superword ①64bit転送→256bit転送 ②スカラ演算→パックド演算 ③ jj++ → jj +=4
  16. 16. その1: Superword
  17. 17. その2: Compressed String 文字列内部表現をbyte配列で扱う SSE4の文字列処理系命令が使用される Java7のString switchで効果絶大!? OpenJDKには実装がありません…
  18. 18. その3: 細かいオプション OptimizeFill ◦ java.util.Arrays.fill()のような、単純な配列書き 込みループをVMの最適化済みメソッドの置換する ◦ JDK7 RIではSSE命令(MOVDQUなど)を使ったメモリ転 送命令に置換される ◦ サポートされるプリミティブ型のビット幅は32bitまで /** * Assigns the specified int value to each element of the specified array * of ints. * * @param a the array to be filled * @param val the value to be stored in all elements of the array */ public static void fill(int[] a, int val) { for (int i = 0, len = a.length; i < len; i++) a[i] = val; } UseFPUForSpilling ◦ スタックメモリアクセスで浮動小数レジスタ(SSEの場合 はXMMレジスタ)を積極的に活用 ◦ GPRを使い切るような、ローカル変数が多数登場する場合 に効果が見込める
  19. 19. その3: 細かいオプション
  20. 20. その4: ガリガリ書く!! ”Write Once, Run Anywhere” に敢えて逆行してみる
  21. 21. 低レベル好きエンジニアなら誰もが(?)気になるC/C++ VS Java
  22. 22. 永遠の?テーマ:C vs Java 去年もあったテーマ 2010 2011
  23. 23. 永遠の?テーマ:C vs Java 内容:結構一般的な話 ◦ 最適化手法  C++の静的 VS Javaの動的  実際に動きながらプロファイルできるのがJavaの強み ◦ メモリ管理  mallocって、鬼速いわけではない(特にマルチスレッド環境)  UseNUMA / UseCompressedOops / UseLargePagesでパフォーマ ンスを上げられるかも ◦ 同時並行性  C++はpthreadやboostでマルチスレッドが実現できるが、使うのが なかなか大変  Javaはカンタン  java.util.concurrent  Fork/Join  バイアスロックで排他制御周りの性能向上まで見込める
  24. 24. 永遠の?テーマ:C vs Java で、どっちがいい? !!!
  25. 25. 永遠の?テーマ:C vs Java  評価軸 ◦ パフォーマンス ◦ スケーラビリティ ◦ etc…  ビジネス要素 ◦ TCO ◦ ROI ◦ etc…  保守 ◦ アプリケーションの想定使用期限まで、技術的にサポート が可能か?関係者全員で合意をとりましょう! ~決めるのはアナタです~
  26. 26. Thank You!!
  27. 27. 今回使わせていただいた資料 Everything I Ever Learned About JVM Performance Tuning at Twitter https://oracleus.wingateweb.com/published/oracleus2011/sessions/37941/S37941_2408980.p df Every Last Nanosecond: Tuning the JVM for Extreme Low Latency https://oracleus.wingateweb.com/published/oracleus2011/sessions/20262/20262_Cho144249. pdf From Java Code to Java Heap: Understanding the Memory Usage of Your Application https://oracleus.wingateweb.com/published/oracleus2011/sessions/24001/S24001_138281.pd f Attack on Scaling: Methods and Tools for Eradicating Performance Bottlenecks https://oracleus.wingateweb.com/published/oracleus2011/sessions/20580/20580_Cho156823. pdf Blazing JVM Performance: Trends Fueled by the Latest Hardware and JVM Optimizations https://oracleus.wingateweb.com/published/oracleus2011/sessions/18540/S18540_2625060.p df Java or C++: Practical Advice You Can Use https://oracleus.wingateweb.com/published/oracleus2011/sessions/24029/S24029_239397.pd f
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×