SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
Native Memory Tracking

Takahiro YAMADA
@yamadamn
2013/11/9
アジェンダ
• Native Memory Tracking (NMT) とは

• NMTを使ってみる

• 補足・参考情報
アジェンダ
• Native Memory Tracking (NMT) とは

• NMTを使ってみる

• 補足・参考情報
Native Memory Tracking (NMT) の概要
• Javaヒープ以外のネイティブ領域の使われ方をトラッキング
• 例えば、従来では難しかったネイティブ領域のリークを確認
• デフォルトでは無効
• 有効化すると、5∼10%のオーバーヘッドがあるとされている

• Oracle (HotSpot) JDK 7 Update 40 (7u40) 以降で利用可能
• JRockitの診断コマンドprint_memusage相当をHotSpotに移植
©Oracle
NMTの利用方法
• 起動オプションを指定して有効化
• -XX:NativeMemoryTracking=[off|summary|detail]
オプション
off
summary
detail

説明
NMTをオフ (デフォルト)
サブシステムごとのメモリ使用量のみ集計
summaryに加え、コールサイトごとのメモリ使用量も収集

• jcmdでNMTの使用状況を確認
• jcmd <PID> VM.native_memory
[summary | detail | baseline | summary.diff | detail.diff |
shutdown | autoShutdown][scale= KB | MB | GB]
• 利用方法はヘルプで確認可能
• jcmd <PID> help VM.native_memory
アジェンダ
• Native Memory Tracking (NMT) とは

• NMTを使ってみる

• 補足・参考情報
NMTを使ってみる (1)
$ jcmd
24000 com.sun.enterprise.glassfish.bootstrap.ASMain --domain domain1
23974 org.apache.derby.drda.NetworkServerControl start
24112 sun.tools.jcmd.JCmd
$ jcmd 24000 VM.native_memory summary
24000:
Native Memory Tracking:
Total:

reserved=946746KB,

-

committed=695670KB

Java Heap (reserved=786432KB, committed=583168KB)
(mmap: reserved=786432KB, committed=583168KB)

-

Class (reserved=4196KB, committed=4196KB)
(classes #14259)
(malloc=4196KB, #5743)
(途中省略)

-

Pooled Free Chunks (reserved=187KB, committed=187KB)
(malloc=187KB)
NMTを使ってみる (2)
$ jcmd 24000 VM.native_memory detail
(最初の方はsummaryと同じ内容)
Virtual memory map:
[0x000000004018a000 - 0x000000004028b000] reserved 1028KB for Thread Stack
from [JavaThread::run()+0x24]
[0x000000004018a000 - 0x000000004028b000] committed 1028KB from
[JavaThread::run()+0x24]
[0x0000000040540000 - 0x0000000040641000] reserved 1028KB for Thread Stack
from [GCTaskThread::run()+0x1c]
[0x0000000040540000 - 0x0000000040641000] committed 1028KB from
[GCTaskThread::run()+0x1c]
(途中省略)
[0x00002aea3c810889] WatcherThread::run()+0x19
(mmap: reserved=1028KB, committed=1028KB)
[0x00002aea3c815ce6] Threads::create_vm(JavaVMInitArgs*, bool*)+0x1b6
(mmap: reserved=1028KB, committed=1028KB)
NMTを使ってみる (3)
$ jcmd 24000 VM.native_memory baseline
24000:
Successfully baselined.
(しばらくしてから以下実行)
$ jcmd 24000 VM.native_memory summary.diff
24000:
Native Memory Tracking:
Total:

reserved=979593KB

+30511KB, committed=728741KB +30735KB

-

Java Heap (reserved=786432KB, committed=582144KB -1023KB)
(mmap: reserved=786432KB, committed=582144KB -1023KB)

-

Class (reserved=4370KB +174KB, committed=4370KB +174KB)
(classes #15772 +1513)
(malloc=4370KB +174KB, #6890 +1133)
(途中省略)

-

Pooled Free Chunks (reserved=17651KB +17464KB, committed=17651KB +17464KB)
(malloc=17651KB +17464KB)
アジェンダ
• Native Memory Tracking (NMT) とは

• NMTを使ってみる

• 補足・参考情報
追加JVMオプション
• NMT関連の追加のオプション
-XX:+UnlockDiagnosticVMOptions によって追加オプションを有効化
• NMT以外にも様々な診断用の追加オプションを有効化できる模様

-XX:+PrintNMTStatistics
• VM終了時に、NMTの統計情報を出力
• オプション-XX:NativeMemoryTracking=[summary|detail]の指定に準じる

•

-XX:-AutoShutdownNMT
• NMTの自動シャットダウンを無効化
• リソースが少ない状態(例: ネイティブ領域が枯渇)だと、NMTが自動停止さ
れるが、それを無効化しておく
jcmdのTips
• jcmd 0 <コマンド>
• PIDに「0」を指定すると、認識したすべてのJVMプロセスに対し実行
• VM.native_memory以外も利用可能
$ jcmd 0 VM.native_memory
24000:
Native Memory Tracking:
Total:

reserved=954125KB,

-

committed=714821KB

Java Heap (reserved=786432KB, committed=593408KB)
(mmap: reserved=786432KB, committed=593408KB)

(途中省略)
23974:
Native memory tracking is not enabled

←このプロセスはNMTが無効

• 他の使い方は、ヘルプ(jcmd -h)を確認
[参考] JRockitのprint_memusage
• jrcmd <PID> print_memusage
$ jrcmd
23227 weblogic.Server
23402 jrockit.tools.jrcmd.JrCmd

$ jrcmd 23227 print_memusage
23227:
Total mapped
Java heap
GC tables
Thread stacks
Compiled code
Internal
OS
Other
Classblocks
Java class data
in 18395 classes)
- Native memory tracking

2098408KB
524288KB
17548KB
33572KB
1048576KB
1352KB
222184KB
129800KB
6656KB
113408KB
1024KB

(reserved=1143216KB)
(reserved=0KB)
(#threads=37)
(used=12253KB)

(malloced=6615KB #18395)
(malloced=113207KB #83208
(malloced=88KB #10)
参考資料
• NMT
• Native Memory Tracking in 7u40 | Marcus Hirt
• http://hirt.se/blog/?p=401

• 診断コマンド - print_memusage (JRockit)
• http://docs.oracle.com/cd/E22646_01/doc.40/b61441/diagnostic.htm#BABJHFHC

• jcmd
• jcmd をさわってみよう
• http://www.slideshare.net/TsunenagaHanyuda/jcmd-16803399

• JDK7u4の新機能について - Programming Studio
• http://www.coppermine.jp/docs/programming/2012/08/jdk7u4.html

• Java Roadmap
• JavaOne 2013 Report - Java Roadmap
• http://www.slideshare.net/OracleMiddleJP/javaone-2013-report/21
まとめ
• JDK7u40以降では、Native Memory Tracking (NMT) を利用可能
• まずは触ってみましょう
• JDK6以前をご利用の方はバージョンアップを
メジャー

リリース日

公式アップデート終了

1.4

2002/2

2006/12

5.0

2004/5

2009/10

6
7

2006/12
2011/7

2013/2
2015/3 (*)

バージョン

* もしくはそれ以降。事情により変更になる場合があります。
http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
ご清聴いただき、ありがとうございました

Takahiro YAMADA
@yamadamn
2013/11/9

Contenu connexe

Tendances

ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patternsnekop
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight RecorderYoshiro Tokumasu
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)NTT DATA Technology & Innovation
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考えるchonaso
 
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編まべ☆てっく運営
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualYuji Kubota
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)NTT DATA Technology & Innovation
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...NTT DATA Technology & Innovation
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...NTT DATA Technology & Innovation
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)NTT DATA Technology & Innovation
 

Tendances (20)

ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patterns
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
 
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 

Similaire à Native Memory Tracking

HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewYuji Kubota
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇Manabu Ori
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたことMITSUNARI Shigeo
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012Takuro Iizuka
 
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキストVxRail ChampionClub
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews, Inc.
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mclMITSUNARI Shigeo
 
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみるYasuhiro Yoshimura
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002Takeshi Kuramochi
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Yasuyuki Sugai
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾外道 父
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2Computational Materials Science Initiative
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
シーサーでのInfiniBand導入事例
シーサーでのInfiniBand導入事例シーサーでのInfiniBand導入事例
シーサーでのInfiniBand導入事例Naoto MATSUMOTO
 

Similaire à Native Memory Tracking (20)

HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
 
Isca13 study
Isca13 studyIsca13 study
Isca13 study
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012
 
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
201711 vxrailチャンピオンクラブ_ワークショップ~入門編~テキスト
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
 
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
 
POWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマークPOWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマーク
 
Open VZ
Open VZOpen VZ
Open VZ
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
 
UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
シーサーでのInfiniBand導入事例
シーサーでのInfiniBand導入事例シーサーでのInfiniBand導入事例
シーサーでのInfiniBand導入事例
 

Plus de Takahiro YAMADA

これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本Takahiro YAMADA
 
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoOpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoTakahiro YAMADA
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方Takahiro YAMADA
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?Takahiro YAMADA
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5Takahiro YAMADA
 
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素Takahiro YAMADA
 
Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Takahiro YAMADA
 

Plus de Takahiro YAMADA (9)

これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
 
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoOpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素DB設計でこだわりたい三つの要素
DB設計でこだわりたい三つの要素
 
Tools for Metaspace
Tools for MetaspaceTools for Metaspace
Tools for Metaspace
 
Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所
 
WebSocket of WebLogic
WebSocket of WebLogicWebSocket of WebLogic
WebSocket of WebLogic
 

Dernier

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Dernier (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

Native Memory Tracking

  • 1. Native Memory Tracking Takahiro YAMADA @yamadamn 2013/11/9
  • 2. アジェンダ • Native Memory Tracking (NMT) とは • NMTを使ってみる • 補足・参考情報
  • 3. アジェンダ • Native Memory Tracking (NMT) とは • NMTを使ってみる • 補足・参考情報
  • 4. Native Memory Tracking (NMT) の概要 • Javaヒープ以外のネイティブ領域の使われ方をトラッキング • 例えば、従来では難しかったネイティブ領域のリークを確認 • デフォルトでは無効 • 有効化すると、5∼10%のオーバーヘッドがあるとされている • Oracle (HotSpot) JDK 7 Update 40 (7u40) 以降で利用可能 • JRockitの診断コマンドprint_memusage相当をHotSpotに移植 ©Oracle
  • 5. NMTの利用方法 • 起動オプションを指定して有効化 • -XX:NativeMemoryTracking=[off|summary|detail] オプション off summary detail 説明 NMTをオフ (デフォルト) サブシステムごとのメモリ使用量のみ集計 summaryに加え、コールサイトごとのメモリ使用量も収集 • jcmdでNMTの使用状況を確認 • jcmd <PID> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown | autoShutdown][scale= KB | MB | GB] • 利用方法はヘルプで確認可能 • jcmd <PID> help VM.native_memory
  • 6. アジェンダ • Native Memory Tracking (NMT) とは • NMTを使ってみる • 補足・参考情報
  • 7. NMTを使ってみる (1) $ jcmd 24000 com.sun.enterprise.glassfish.bootstrap.ASMain --domain domain1 23974 org.apache.derby.drda.NetworkServerControl start 24112 sun.tools.jcmd.JCmd $ jcmd 24000 VM.native_memory summary 24000: Native Memory Tracking: Total: reserved=946746KB, - committed=695670KB Java Heap (reserved=786432KB, committed=583168KB) (mmap: reserved=786432KB, committed=583168KB) - Class (reserved=4196KB, committed=4196KB) (classes #14259) (malloc=4196KB, #5743) (途中省略) - Pooled Free Chunks (reserved=187KB, committed=187KB) (malloc=187KB)
  • 8. NMTを使ってみる (2) $ jcmd 24000 VM.native_memory detail (最初の方はsummaryと同じ内容) Virtual memory map: [0x000000004018a000 - 0x000000004028b000] reserved 1028KB for Thread Stack from [JavaThread::run()+0x24] [0x000000004018a000 - 0x000000004028b000] committed 1028KB from [JavaThread::run()+0x24] [0x0000000040540000 - 0x0000000040641000] reserved 1028KB for Thread Stack from [GCTaskThread::run()+0x1c] [0x0000000040540000 - 0x0000000040641000] committed 1028KB from [GCTaskThread::run()+0x1c] (途中省略) [0x00002aea3c810889] WatcherThread::run()+0x19 (mmap: reserved=1028KB, committed=1028KB) [0x00002aea3c815ce6] Threads::create_vm(JavaVMInitArgs*, bool*)+0x1b6 (mmap: reserved=1028KB, committed=1028KB)
  • 9. NMTを使ってみる (3) $ jcmd 24000 VM.native_memory baseline 24000: Successfully baselined. (しばらくしてから以下実行) $ jcmd 24000 VM.native_memory summary.diff 24000: Native Memory Tracking: Total: reserved=979593KB +30511KB, committed=728741KB +30735KB - Java Heap (reserved=786432KB, committed=582144KB -1023KB) (mmap: reserved=786432KB, committed=582144KB -1023KB) - Class (reserved=4370KB +174KB, committed=4370KB +174KB) (classes #15772 +1513) (malloc=4370KB +174KB, #6890 +1133) (途中省略) - Pooled Free Chunks (reserved=17651KB +17464KB, committed=17651KB +17464KB) (malloc=17651KB +17464KB)
  • 10. アジェンダ • Native Memory Tracking (NMT) とは • NMTを使ってみる • 補足・参考情報
  • 11. 追加JVMオプション • NMT関連の追加のオプション -XX:+UnlockDiagnosticVMOptions によって追加オプションを有効化 • NMT以外にも様々な診断用の追加オプションを有効化できる模様 -XX:+PrintNMTStatistics • VM終了時に、NMTの統計情報を出力 • オプション-XX:NativeMemoryTracking=[summary|detail]の指定に準じる • -XX:-AutoShutdownNMT • NMTの自動シャットダウンを無効化 • リソースが少ない状態(例: ネイティブ領域が枯渇)だと、NMTが自動停止さ れるが、それを無効化しておく
  • 12. jcmdのTips • jcmd 0 <コマンド> • PIDに「0」を指定すると、認識したすべてのJVMプロセスに対し実行 • VM.native_memory以外も利用可能 $ jcmd 0 VM.native_memory 24000: Native Memory Tracking: Total: reserved=954125KB, - committed=714821KB Java Heap (reserved=786432KB, committed=593408KB) (mmap: reserved=786432KB, committed=593408KB) (途中省略) 23974: Native memory tracking is not enabled ←このプロセスはNMTが無効 • 他の使い方は、ヘルプ(jcmd -h)を確認
  • 13. [参考] JRockitのprint_memusage • jrcmd <PID> print_memusage $ jrcmd 23227 weblogic.Server 23402 jrockit.tools.jrcmd.JrCmd $ jrcmd 23227 print_memusage 23227: Total mapped Java heap GC tables Thread stacks Compiled code Internal OS Other Classblocks Java class data in 18395 classes) - Native memory tracking 2098408KB 524288KB 17548KB 33572KB 1048576KB 1352KB 222184KB 129800KB 6656KB 113408KB 1024KB (reserved=1143216KB) (reserved=0KB) (#threads=37) (used=12253KB) (malloced=6615KB #18395) (malloced=113207KB #83208 (malloced=88KB #10)
  • 14. 参考資料 • NMT • Native Memory Tracking in 7u40 | Marcus Hirt • http://hirt.se/blog/?p=401 • 診断コマンド - print_memusage (JRockit) • http://docs.oracle.com/cd/E22646_01/doc.40/b61441/diagnostic.htm#BABJHFHC • jcmd • jcmd をさわってみよう • http://www.slideshare.net/TsunenagaHanyuda/jcmd-16803399 • JDK7u4の新機能について - Programming Studio • http://www.coppermine.jp/docs/programming/2012/08/jdk7u4.html • Java Roadmap • JavaOne 2013 Report - Java Roadmap • http://www.slideshare.net/OracleMiddleJP/javaone-2013-report/21
  • 15. まとめ • JDK7u40以降では、Native Memory Tracking (NMT) を利用可能 • まずは触ってみましょう • JDK6以前をご利用の方はバージョンアップを メジャー リリース日 公式アップデート終了 1.4 2002/2 2006/12 5.0 2004/5 2009/10 6 7 2006/12 2011/7 2013/2 2015/3 (*) バージョン * もしくはそれ以降。事情により変更になる場合があります。 http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html