[Java] Using Java Flight Recorder with Compact Profiles

原文はこちら。
https://blogs.oracle.com/jtc/entry/using_java_fligt_recorder_with

大きな兄さんであるJava SEと同じように、Java SE Embedded 8プラットフォームはJava Flight Recorderという、プロファイリングおよびイベント収集のためのすばらしいフレームワークがJava Runtime Environmentに組み込まれています。
Java SE
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java SE Embedded
http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html
Java Flight Recorder
http://www.oracle.com/technetwork/java/javaseproducts/mission-control/java-mission-control-1998576.html
しかしながら、Flight RecorderはJava SE Embedded 8 Full JREでのみ利用可能で、より小さなCompact Profileでは利用できません。
Java SE Embedded 8 Compact Profiles Overview
http://www.oracle.com/technetwork/java/embedded/resources/tech/compact-profiles-overview-2157132.html
そんなわけで、「Compact ProfileでJava Flight Recorderを使うためにはどうすればいいの?」という質問が出てきます。

現時点では、より小さなCompact1、Compact2 profileでは以下に示す変更をしない限り、Java Flight Recorderをサポートすることができません。従って、ここでは標準でサポートしてもらうことの議論は避けましょう。注目すべきは、Compact3です。Compact3 Profileの仕様には中でもjavax.management APIを含んでおり、より合理的な相手であるからです。
JEP 161: Compact Profiles
http://openjdk.java.net/jeps/161 
結局のところ、Compact3 ProfileでFlight Recorderを有効にするためには、いくつかのファイルをFull JREからコピーする必要があります。Flight Recorderが使えるインスタンスを作成する際の支援となる手順をご紹介します。

1. あなたが使っているプラットフォームに対応したJava SE-Embedded EJREをダウンロードします。
Oracle Java SE Embedded Downloads
http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html 

この例では、Linuxホストで実施するので、ARMv6/v7 Hard Floatオプションを選択します(古いRaspberry Pi向けです)。

2. the EJREを展開します。
$ tar xvf ejdk-8u51-linux-armv6-vfp-hflt.tar.gz
3. EJREのjrecreate.shスクリプトを使ってFull JREを作成します。
$ ./ejdk1.8.0_51/bin/jrecreate.sh --dest full_jre -g -k
Building JRE using Options {
    ejdk-home: /home/pi/ejdk1.8.0_51
    dest: /home/pi/full_jre
    target: linux_armv6_vfp_hflt
    vm: all
    runtime: jre
    debug: true
    keep-debug-info: true
    no-compression: false
    dry-run: false
    verbose: false
    extension: []
}

Target JRE Size is 59,389 KB (on disk usage may be greater).
Embedded JRE created successfully
4. Compact3 JREを作成します。
$ ./ejdk1.8.0_51/bin/jrecreate.sh --profile compact3 --dest compact3 -g -k
Building JRE using Options {
    ejdk-home: /home/pi/ejdk1.8.0_51
    dest: /home/pi/compact3
    target: linux_armv6_vfp_hflt
    vm: client
    runtime: compact3 profile
    debug: true
    keep-debug-info: true
    no-compression: false
    dry-run: false
    verbose: false
    extension: []
}


Target JRE Size is 24,336 KB (on disk usage may be greater).
Embedded JRE created successfully
5. Compact3 JREのサイズを確認します。このサイズを使い、Flight Recorderのサポートを追加するために必要な領域を確認します。
$ du -sk compact3
    24480   compact3
6. compact3/lib/jfr/ ディレクトリを作成します。
$ mkdir compact3/lib/jfr
7. 以下のコマンドを使い、ファイルをFull JREからCompact3 Profileインスタンスにコピーします。
$ cd full_jre/
$ cp ./lib/jfr.jar ../compact3/lib
$ cp ./lib/arm/libjfr.so ../compact3/lib/arm
$ cp ./lib/arm/libbci.so ../compact3/lib/arm
$ cp ./lib/jfr/default.jfc ../compact3/lib/jfr
$ cp ./lib/jfr/profile.jfc ../compact3/lib/jfr 
8. 必要な作業は以上です。comact3 JREのディスクの占有サイズの変異を比較しましょう。Java Flight Recorderを利用するために必要な追加のディスクスペースを確認できます。
$ du -sk ../compact3
    24824   ../compact3
手順(5)のディスク使用量を比較すると、Java Flight Recorderを有効化するためには400KBほどのサイズが余分に必要であることがわかります。安全な方法でFlight Recorderが有効化されインスタンスにリモートから接続する方法を理解するためには、以下の記事をご覧ください。
Managing Java Flight Recorder Enabled JVMs with SSL 
https://blogs.oracle.com/jtc/entry/managing_java_flight_recorder_enabled

0 件のコメント:

コメントを投稿