Your SlideShare is downloading. ×
0
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Native Memory Tracking機能
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Native Memory Tracking機能

1,007

Published on

2013年12月19日に開催されたWebLogic Server勉強会@東京のLTセッションでCTC (OracleACE) 山田 貴裕氏が使用した「Native Memory Tracking機能」資料です。

2013年12月19日に開催されたWebLogic Server勉強会@東京のLTセッションでCTC (OracleACE) 山田 貴裕氏が使用した「Native Memory Tracking機能」資料です。

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,007
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
20
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. WebLogic Server勉強会@東京 LT Native Memory Tracking ソフトウェアサービス本部 ミドルウェアサポート部 山田 貴裕 2013/12/19 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 2. はじめに • 発表する内容は個人の見解であり、所属する組織の公式な見解 ではありません。 • 資料の内容は正確を期するよう注意しておりますが、妥当性や 正確性について保証するものではありません。 • 環境 – WebLogic Server(WLS) 10.3.6, 12.1.1~ – Oracle JDK 7 Update 40以降 – 実行例はLinux x64上だが、その他の環境もほぼ同様に利用可能 2 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 3. アジェンダ • Native Memory Tracking (NMT) とは • NMTを使ってみる • 補足・参考情報 3 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 4. アジェンダ • Native Memory Tracking (NMT) とは • NMTを使ってみる • 補足・参考情報 4 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 5. Native Memory Tracking (NMT) の概要 • Javaヒープ以外のネイティブ領域の使われ方をトラッキング – 例えば、従来では難しかったネイティブ領域のリークを確認 – デフォルトでは無効 • 有効化すると、5~10%のオーバーヘッドがあるとされている • Oracle (HotSpot) JDK 7 Update 40 (7u40) 以降で利用可能 – JRockitの診断コマンドprint_memusage相当をHotSpotに移植 ©Oracle 5 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 6. NMTの利用方法 1. 起動オプションを指定して有効化 -XX:NativeMemoryTracking=[off|summary|detail] オプション 説明 off NMTをオフ (デフォルト) summary サブシステムごとのメモリ使用量のみ集計 detail summaryに加え、コールサイトごとのメモリ使用量も収集 2. 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 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 7. アジェンダ • Native Memory Tracking (NMT) とは • NMTを使ってみる • 補足・参考情報 7 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 8. NMTを使ってみる (1) • jcmd <PID> VM.native_memory summary $ jcmd 24000 weblogic.Server 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 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 9. NMTを使ってみる (2) • jcmd <PID> VM.native_memory detail $ 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) [0x00002aea3c86152d] VMThread::run()+0x1d (mmap: reserved=1028KB, committed=1028KB) [0x00002aea3c71b7fc] perfMemory_init()+0x4c (mmap: reserved=32KB, committed=0KB) 9 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 10. NMTを使ってみる (3) • jcmd <PID> VM.native_memory baseline / summary.diff $ 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 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 11. アジェンダ • Native Memory Tracking (NMT) とは • NMTを使ってみる • 補足・参考情報 11 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 12. 追加JVMオプション • NMT関連の追加のオプション -XX:+UnlockDiagnosticVMOptions によって追加オプションを有効化 • NMT以外にも様々な診断用の追加オプションを有効化できる模様 -XX:+PrintNMTStatistics – VM終了時に、NMTの統計情報を出力 – オプション-XX:NativeMemoryTracking=[summary|detail]の指定に準じる -XX:-AutoShutdownNMT – NMTの自動シャットダウンを無効化 – リソースが少ない状態(例: ネイティブ領域が枯渇)だと、NMTが自動停止されるが、 それを無効化しておく – WLSの場合の実行例 $ JAVA_OPTIONS="-XX:NativeMemoryTracking=detail -XX:+UnlockDiagnosticVMOptions" $ JAVA_OPTIONS="${JAVA_OPTIONS} -XX:+PrintNMTStatistics -XX:-AutoShutdownNMT" $ export JAVA_OPTIONS $ ./startWebLogic.sh 12 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 13. 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) - Class (reserved=4456KB, committed=4456KB) (classes #16117) (malloc=4456KB, #7317) (途中省略) 23974: Native memory tracking is not enabled ← このプロセスはNMTが無効 • 他の使い方は、ヘルプ(jcmd -h)を確認 13 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 14. [参考] 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 - Native memory tracking 14 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 in 18395 classes) (malloced=88KB #10) Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 15. 参考資料 • 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 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 16. まとめ • JDK7u40以降では、Native Memory Tracking (NMT) を利用可能 – まずは触ってみましょう • WLS10.3.6, 12.1.1~ではJDK7に対応 – JDK6以前をご利用の方はバージョンアップを メジャー バージョン リリース日 公式アップデート終了 1.4 2002/2 2006/12 5.0 2004/5 2009/10 6 2006/12 2013/2 7 2011/7 2015/3 (*) * もしくはそれ以降。事情により変更になる場合があります。 http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html WLS サポートに加入している場合は、公式アップデート終了後も、新しいモジュールが 提供されるケースもあります。 16 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  • 17. Copyright (c)2013 ITOCHU Techno-Solutions Corporation

×