「Tezosノードのプロファイリング」の版間の差分
(ページの作成:「= Profiling the Tezos node = Memory profiling the OCaml heap <sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub>~</sub></sub></sub></sub></sub></...」) |
|||
1行目: | 1行目: | ||
− | = | + | = Tezosノードのプロファイリング= |
− | + | OCamlヒープのメモリプロファイリング<sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> </sub> </sub> </sub> </sub> </sub> </sub> </sub> / sub> </sub> </sub> | |
− | * | + | * statmemprofパッチでOCamlスイッチをインストールする: |
− | <code>4.04.2+statistical-memprof</code> | + | <code> 4.04.2 + statistical-memprof </code>または<code> 4.06.0 + statistical-memprof </code> |
− | * | + | * <code> statmemprof-emacs </code>をインストールします。 |
− | * | + | *ノードにstatmemprofをロードできるようにする。 |
− | + | メインパッケージへの依存として<code> statmemprof-emacs </code>パッケージを追加し、<code> node_main.mlに<code> let()= Statmemprof_emacs.start 1E-4 30 5 </code>を追加します。 </code>ファイルです。 | |
− | + | 引数: | |
− | * <code>sampling_rate</code> | + | * <code> sampling_rate </code>はプロファイラのサンプリングレートです。適切な値:<code> 1e-4 </code> |
− | * <code>callstack_size</code> | + | * <code> callstack_size </code>は、サンプリングされた各割り当てごとに取得されるコールスタックのフラグメントのサイズです。 |
− | * <code>min_sample_print</code> | + | * <code> min_sample_print </code>は、割り当ての場所が表示されない最小サンプル数です。 |
− | * | + | *これをあなたの<code> .emacs </code>に追加することで、sturgeonをemacsにロードする: |
:: | :: | ||
− | + | (opam-share(ignore-errors(car) "プロセスライン" opam "" config "" var "" share ")))))))) | |
− | + | ?(および(およびopam-share(ファイルディレクトリ-p opam-share)) | |
− | + | ??(add-to-list 'load-path(展開ファイル名 "emacs / site-lisp" opam-share)))) | |
− | + | ( 'チョウザメが必要です)</pre> | |
− | * | + | *ノードを起動し、チョウザメで接続します。 |
− | + | プロセスがpid <code> 1234 </code>で起動された場合 | |
:: | :: | ||
− | <pre>M-x sturgeon-connect | + | <pre> M-x sturgeon-connect |
− | tezos-nodememprof.1234.sturgeon</pre> | + | tezos-nodememprof.1234.sturgeon </pre> |
− | + | (タブ補完はソケット名を見つけるために働く) | |
− | + | CヒープのプロファイリングC <ヒント> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ>?</サブ> </サブ> </サブ> </sub>?</sub>?</sub>?</sub>?</sub>?</sub> | |
− | * | + | * <code> valgrind </code>と<code> massif-visualizer </code>をインストールします。 |
:: | :: | ||
− | <pre>valgrind --tool= | + | <pre> valgrind --tool =マジフのtezos-node run ... </pre> |
− | * | + | * <code> Ctrl-C </code>で停止してから表示してください |
:: | :: | ||
− | <pre>massif-visualizer massif.out.pid</pre> | + | <pre> massif-visualizer massif.out.pid </pre> |
− | + | パフォーマンスプロファイリング<sub> <sub>?</sub>?</sub> ~~ </sub> | |
− | * | + | * perf(Debianの<code> linux-perf </code>パッケージをインストールしてください。 |
− | + | 現在のカーネル用のパッケージが存在しない場合は、以前のバージョンを使用することができます。カーネルが4.9の場合は<code> perf </code>コマンドを<code> perf_4.9 </code>に置き換えます)。 | |
− | * | + | *ノードを実行し、pidを探します。 |
− | * | + | * <code> perf record -p pid --call-stack dwarf </code>でperfをアタッチします。 |
− | + | 次に、<code> Ctrl-C </code>でキャプチャを停止します。これは、多くのデータを表すことができます。あまり長くはしないでください。これが多すぎると、<code> - call-stack dwarf </code>を削除して管理しやすいものにすることができますが、情報の解釈は難しくなります。 | |
− | * | + | *結果を<code> perf report </code>で表示します。 |
2018年5月31日 (木) 00:37時点における最新版
Tezosノードのプロファイリング[編集]
OCamlヒープのメモリプロファイリング / sub>
- statmemprofパッチでOCamlスイッチをインストールする:
4.04.2 + statistical-memprof
または 4.06.0 + statistical-memprof
-
statmemprof-emacs
をインストールします。 - ノードにstatmemprofをロードできるようにする。
メインパッケージへの依存として statmemprof-emacs
パッケージを追加し、 node_main.mlに<code> let()= Statmemprof_emacs.start 1E-4 30 5
を追加します。 </code>ファイルです。
引数:
-
sampling_rate
はプロファイラのサンプリングレートです。適切な値:1e-4
-
callstack_size
は、サンプリングされた各割り当てごとに取得されるコールスタックのフラグメントのサイズです。 -
min_sample_print
は、割り当ての場所が表示されない最小サンプル数です。 - これをあなたの
.emacs
に追加することで、sturgeonをemacsにロードする:
(opam-share(ignore-errors(car) "プロセスライン" opam "" config "" var "" share ")))))))) ?(および(およびopam-share(ファイルディレクトリ-p opam-share)) ??(add-to-list 'load-path(展開ファイル名 "emacs / site-lisp" opam-share))))
( 'チョウザメが必要です)</pre>
- ノードを起動し、チョウザメで接続します。
プロセスがpid 1234
で起動された場合
M-x sturgeon-connect tezos-nodememprof.1234.sturgeon
(タブ補完はソケット名を見つけるために働く)
CヒープのプロファイリングC <ヒント> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ>?</サブ> </サブ> </サブ> ????</sub>?</sub>
-
valgrind
とmassif-visualizer
をインストールします。
valgrind --tool =マジフのtezos-node run ...
-
Ctrl-C
で停止してから表示してください
massif-visualizer massif.out.pid
パフォーマンスプロファイリング ?? ~~ </sub>
- perf(Debianの
linux-perf
パッケージをインストールしてください。
現在のカーネル用のパッケージが存在しない場合は、以前のバージョンを使用することができます。カーネルが4.9の場合は perf
コマンドを perf_4.9
に置き換えます)。
- ノードを実行し、pidを探します。
-
perf record -p pid --call-stack dwarf
でperfをアタッチします。
次に、 Ctrl-C
でキャプチャを停止します。これは、多くのデータを表すことができます。あまり長くはしないでください。これが多すぎると、 - call-stack dwarf
を削除して管理しやすいものにすることができますが、情報の解釈は難しくなります。
- 結果を
perf report
で表示します。