SlideShare a Scribd company logo
~ネイティブな世界に注目して~



2011/11/14
末永 恭正          ( @YaSuenag )
自己紹介
    すえなが   やすまさ

 末永 恭正(@YaSuenag)
 NTT OSSセンタ勤務
    ◦ Javaの障害解析、Q&A対応
       合言葉は「Javaいい子だから!」
       hs_errログやコアの解析
       Javaとlibc、Linuxカーネルの間を行ったり来たり…
    ◦ たま~にOpenJDKのパッチ書いてます
   根っからのサンデープログラマー
    ◦ Object Pascal (Delphi) 大好き
    ◦ CとJavaも好き
    ◦ アセンブラも結構好き
   JavaOne歴:2年(2010 & 2011)
JavaOneで感じたこと
   求められるスキルの2極化 (EE vs SE)
    ◦ EE
      とりあえず「クラウド」
      とにかく「ポータビリティ」!
      EoD
対
    ◦ SE
極       とりあえず「並列化」
        マルチリンガル?なVMの実現
        VMの作りや動きを意識
        究極を目指すなら、マシンを意識した領域へ…


今回の注目ポイント!
まずは事例から…
みんなどうしてる?Tuning
   Twitterの場合




時間切れ
みんなどうしてる?Tuning
   Twitterの場合




            !!!




                  java.lang.Integer (32bit)
みんなどうしてる?Tuning
     Twitterの場合
      ◦ GCのチューニングをきめ細かく実施
      ◦ GCコストを下げるため、VM内部のC++オブジェクト表現
        (oop)まで意識
        クラスの継承関係やフィールドの型・数から、実際の消費メモリ
         量を見積もり



メモリ負荷を考え抜いたチューニング
みんなどうしてる?Tuning
   Goldman Sachsの場合
みんなどうしてる?Tuning
   Goldman Sachsの場合
    ◦ hsdisを使ったディスアセンブル
     http://wikis.sun.com/display/HotSpotInternals/PrintAssembly




スカラ演算…
みんなどうしてる?Tuning
   Goldman Sachsの場合
    ◦ ハードウェア関連情報のチェック
      キャッシュのミスヒット(CPUキャッシュ・TLBなど)
      etc…
みんなどうしてる?Tuning
   Goldman Sachsの場合
    ◦ Large Page
みんなどうしてる?Tuning
    Goldman Sachsの場合
     ◦ OSやハードウェアまで含む最適化
     ◦ JVMのハードウェア最適化を信頼しながらも、さらなる
       ファインチューニング
       メモリアクセス
       命令コード



「ナノ秒レベル」のチューニング
※GC以外

ななめ45°下から
チューニングポイントを
覗き見る
その1: Superword
 単純なベクトル化
 SSE / AVX命令を有効活用できるはず
    ◦ プロセッサの本領発揮!
   JDK7 RIにもUseSuperWordが存在するが、ベクトル化
    の実装のみ
その1: Superword




      ①64bit転送→256bit転送

     ②スカラ演算→パックド演算


         ③ jj++ → jj +=4
その1: Superword
その2: Compressed String
 文字列内部表現をbyte配列で扱う
 SSE4の文字列処理系命令が使用される
 Java7のString switchで効果絶大!?
 OpenJDKには実装がありません…
その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を使い切るような、ローカル変数が多数登場する場合
      に効果が見込める
その3: 細かいオプション
その4: ガリガリ書く!!
   ”Write Once, Run Anywhere” に敢えて逆行してみる
低レベル好きエンジニアなら誰もが(?)気になる

C/C++ VS Java
永遠の?テーマ:C vs Java
   去年もあったテーマ




    2010        2011
永遠の?テーマ:C vs Java
   内容:結構一般的な話
    ◦ 最適化手法
      C++の静的 VS Javaの動的
      実際に動きながらプロファイルできるのがJavaの強み
    ◦ メモリ管理
      mallocって、鬼速いわけではない(特にマルチスレッド環境)
      UseNUMA / UseCompressedOops / UseLargePagesでパフォーマ
       ンスを上げられるかも
    ◦ 同時並行性
      C++はpthreadやboostでマルチスレッドが実現できるが、使うのが
       なかなか大変
      Javaはカンタン
        java.util.concurrent
        Fork/Join
        バイアスロックで排他制御周りの性能向上まで見込める
永遠の?テーマ:C vs Java
   で、どっちがいい?



        !!!
永遠の?テーマ:C vs Java
     評価軸
      ◦ パフォーマンス
      ◦ スケーラビリティ
      ◦ etc…
     ビジネス要素
      ◦ TCO
      ◦ ROI
      ◦ etc…
     保守
      ◦ アプリケーションの想定使用期限まで、技術的にサポート
        が可能か?

関係者全員で合意をとりましょう!
           ~決めるのはアナタです~
Thank You!!
今回使わせていただいた資料
   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

More Related Content

What's hot

NAND Flash から InnoDB にかけての話(仮)
NAND Flash から InnoDB にかけての話(仮)NAND Flash から InnoDB にかけての話(仮)
NAND Flash から InnoDB にかけての話(仮)
Takanori Sejima
 
NetBSD on Conoha VPS at JNUG BoF 2014
NetBSD on Conoha VPS at JNUG BoF 2014NetBSD on Conoha VPS at JNUG BoF 2014
NetBSD on Conoha VPS at JNUG BoF 2014Ryo ONODERA
 
"アレ"からJubatusを使う
"アレ"からJubatusを使う"アレ"からJubatusを使う
"アレ"からJubatusを使う
JubatusOfficial
 
Node.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよNode.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよ
Yuusuke Takeuchi
 
JubaQLご紹介
JubaQLご紹介JubaQLご紹介
JubaQLご紹介
JubatusOfficial
 
Arduino jenkins
Arduino jenkinsArduino jenkins
Arduino jenkins
Kiro Harada
 
Play frameworkの概要
Play frameworkの概要Play frameworkの概要
Play frameworkの概要
Shuhei Kaneko
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
Kei Mikage
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:code
Kouji Matsui
 
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみたHtml5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみたYuusuke Takeuchi
 
Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについてShinobu Okano
 
Jenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとJenkins に XFD を追加してみると
Jenkins に XFD を追加してみると
Kiro Harada
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
Tatsumi Naganuma
 
EC2クラスタインスタンス使ってみました!
EC2クラスタインスタンス使ってみました!EC2クラスタインスタンス使ってみました!
EC2クラスタインスタンス使ってみました!
Eiji Sato
 
Frontend optimization dena_creativeseminar
Frontend optimization dena_creativeseminarFrontend optimization dena_creativeseminar
Frontend optimization dena_creativeseminar
DeNA_open_events
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いているAkihiro Kuwano
 
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
Takanori Sejima
 

What's hot (20)

NAND Flash から InnoDB にかけての話(仮)
NAND Flash から InnoDB にかけての話(仮)NAND Flash から InnoDB にかけての話(仮)
NAND Flash から InnoDB にかけての話(仮)
 
NetBSD on Conoha VPS at JNUG BoF 2014
NetBSD on Conoha VPS at JNUG BoF 2014NetBSD on Conoha VPS at JNUG BoF 2014
NetBSD on Conoha VPS at JNUG BoF 2014
 
"アレ"からJubatusを使う
"アレ"からJubatusを使う"アレ"からJubatusを使う
"アレ"からJubatusを使う
 
20131012 nodejs
20131012 nodejs20131012 nodejs
20131012 nodejs
 
Node.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよNode.jsで対戦ゲーム作ったよ
Node.jsで対戦ゲーム作ったよ
 
JubaQLご紹介
JubaQLご紹介JubaQLご紹介
JubaQLご紹介
 
Arduino jenkins
Arduino jenkinsArduino jenkins
Arduino jenkins
 
Play frameworkの概要
Play frameworkの概要Play frameworkの概要
Play frameworkの概要
 
Node.js入門
Node.js入門Node.js入門
Node.js入門
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:code
 
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみたHtml5の通信対戦ゲームをテスト駆動開発で作ってみた
Html5の通信対戦ゲームをテスト駆動開発で作ってみた
 
Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについて
 
Jenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとJenkins に XFD を追加してみると
Jenkins に XFD を追加してみると
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
EC2クラスタインスタンス使ってみました!
EC2クラスタインスタンス使ってみました!EC2クラスタインスタンス使ってみました!
EC2クラスタインスタンス使ってみました!
 
Frontend optimization dena_creativeseminar
Frontend optimization dena_creativeseminarFrontend optimization dena_creativeseminar
Frontend optimization dena_creativeseminar
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
 
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
 

Similar to ななめ45°から見たJavaOne

Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
 
JVMの中身を可視化してみた
JVMの中身を可視化してみたJVMの中身を可視化してみた
JVMの中身を可視化してみたKengo Toda
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
Takafumi Ikeda
 
Hyper-V 虎の巻
Hyper-V 虎の巻Hyper-V 虎の巻
Hyper-V 虎の巻hirookun
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!guestc06e54
 
Startup JavaScript
Startup JavaScriptStartup JavaScript
Startup JavaScript
Akinari Tsugo
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
gree_tech
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由
Yusuke Naka
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会Takahiro Iwase
 
[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...
[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...
[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...
Insight Technology, Inc.
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
David Buck
 
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallこれからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
なおき きしだ
 

Similar to ななめ45°から見たJavaOne (20)

Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
JVMの中身を可視化してみた
JVMの中身を可視化してみたJVMの中身を可視化してみた
JVMの中身を可視化してみた
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
Hyper-V 虎の巻
Hyper-V 虎の巻Hyper-V 虎の巻
Hyper-V 虎の巻
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
 
つぶLT20121215
つぶLT20121215つぶLT20121215
つぶLT20121215
 
Startup JavaScript
Startup JavaScriptStartup JavaScript
Startup JavaScript
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会
 
[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...
[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...
[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
 
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallこれからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
 

More from AdvancedTechNight

CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DAdvancedTechNight
 
D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界AdvancedTechNight
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めようAdvancedTechNight
 
CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現AdvancedTechNight
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocket
AdvancedTechNight
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
AdvancedTechNight
 
Backbone.js入門
Backbone.js入門Backbone.js入門
Backbone.js入門
AdvancedTechNight
 
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)ScriptTypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
AdvancedTechNight
 
three.jsで作る3Dの世界
three.jsで作る3Dの世界three.jsで作る3Dの世界
three.jsで作る3Dの世界
AdvancedTechNight
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
 
Stormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIStormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIAdvancedTechNight
 
Spine入門
Spine入門Spine入門
Spine入門
AdvancedTechNight
 
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
AdvancedTechNight
 
Twitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demoTwitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demo
AdvancedTechNight
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
AdvancedTechNight
 
ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」
AdvancedTechNight
 
Hadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックHadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバック
AdvancedTechNight
 
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちAdvancedTechNight
 
ATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMRATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMRAdvancedTechNight
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersAdvancedTechNight
 

More from AdvancedTechNight (20)

CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3D
 
D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
 
CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocket
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
Backbone.js入門
Backbone.js入門Backbone.js入門
Backbone.js入門
 
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)ScriptTypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
 
three.jsで作る3Dの世界
three.jsで作る3Dの世界three.jsで作る3Dの世界
three.jsで作る3Dの世界
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
Stormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIStormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPI
 
Spine入門
Spine入門Spine入門
Spine入門
 
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
 
Twitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demoTwitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demo
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
 
ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」
 
Hadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックHadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバック
 
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
 
ATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMRATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMR
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlers
 

Recently uploaded

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 

Recently uploaded (14)

This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 

ななめ45°から見たJavaOne

  • 2. 自己紹介 すえなが やすまさ  末永 恭正(@YaSuenag)  NTT OSSセンタ勤務 ◦ Javaの障害解析、Q&A対応  合言葉は「Javaいい子だから!」  hs_errログやコアの解析  Javaとlibc、Linuxカーネルの間を行ったり来たり… ◦ たま~にOpenJDKのパッチ書いてます  根っからのサンデープログラマー ◦ Object Pascal (Delphi) 大好き ◦ CとJavaも好き ◦ アセンブラも結構好き  JavaOne歴:2年(2010 & 2011)
  • 3. JavaOneで感じたこと  求められるスキルの2極化 (EE vs SE) ◦ EE  とりあえず「クラウド」  とにかく「ポータビリティ」!  EoD 対 ◦ SE 極  とりあえず「並列化」  マルチリンガル?なVMの実現  VMの作りや動きを意識  究極を目指すなら、マシンを意識した領域へ… 今回の注目ポイント!
  • 5. みんなどうしてる?Tuning  Twitterの場合 時間切れ
  • 6.
  • 7. みんなどうしてる?Tuning  Twitterの場合 !!! java.lang.Integer (32bit)
  • 8. みんなどうしてる?Tuning  Twitterの場合 ◦ GCのチューニングをきめ細かく実施 ◦ GCコストを下げるため、VM内部のC++オブジェクト表現 (oop)まで意識  クラスの継承関係やフィールドの型・数から、実際の消費メモリ 量を見積もり メモリ負荷を考え抜いたチューニング
  • 9. みんなどうしてる?Tuning  Goldman Sachsの場合
  • 10. みんなどうしてる?Tuning  Goldman Sachsの場合 ◦ hsdisを使ったディスアセンブル http://wikis.sun.com/display/HotSpotInternals/PrintAssembly スカラ演算…
  • 11. みんなどうしてる?Tuning  Goldman Sachsの場合 ◦ ハードウェア関連情報のチェック  キャッシュのミスヒット(CPUキャッシュ・TLBなど)  etc…
  • 12. みんなどうしてる?Tuning  Goldman Sachsの場合 ◦ Large Page
  • 13. みんなどうしてる?Tuning  Goldman Sachsの場合 ◦ OSやハードウェアまで含む最適化 ◦ JVMのハードウェア最適化を信頼しながらも、さらなる ファインチューニング  メモリアクセス  命令コード 「ナノ秒レベル」のチューニング
  • 15. その1: Superword  単純なベクトル化  SSE / AVX命令を有効活用できるはず ◦ プロセッサの本領発揮!  JDK7 RIにもUseSuperWordが存在するが、ベクトル化 の実装のみ
  • 16. その1: Superword ①64bit転送→256bit転送 ②スカラ演算→パックド演算 ③ jj++ → jj +=4
  • 18. その2: Compressed String  文字列内部表現をbyte配列で扱う  SSE4の文字列処理系命令が使用される  Java7のString switchで効果絶大!?  OpenJDKには実装がありません…
  • 19. その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を使い切るような、ローカル変数が多数登場する場合 に効果が見込める
  • 21. その4: ガリガリ書く!!  ”Write Once, Run Anywhere” に敢えて逆行してみる
  • 23. 永遠の?テーマ:C vs Java  去年もあったテーマ 2010 2011
  • 24. 永遠の?テーマ:C vs Java  内容:結構一般的な話 ◦ 最適化手法  C++の静的 VS Javaの動的  実際に動きながらプロファイルできるのがJavaの強み ◦ メモリ管理  mallocって、鬼速いわけではない(特にマルチスレッド環境)  UseNUMA / UseCompressedOops / UseLargePagesでパフォーマ ンスを上げられるかも ◦ 同時並行性  C++はpthreadやboostでマルチスレッドが実現できるが、使うのが なかなか大変  Javaはカンタン  java.util.concurrent  Fork/Join  バイアスロックで排他制御周りの性能向上まで見込める
  • 25. 永遠の?テーマ:C vs Java  で、どっちがいい? !!!
  • 26. 永遠の?テーマ:C vs Java  評価軸 ◦ パフォーマンス ◦ スケーラビリティ ◦ etc…  ビジネス要素 ◦ TCO ◦ ROI ◦ etc…  保守 ◦ アプリケーションの想定使用期限まで、技術的にサポート が可能か? 関係者全員で合意をとりましょう! ~決めるのはアナタです~
  • 28. 今回使わせていただいた資料  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