「Tezosノードのプロファイリング」の版間の差分

提供: tezos-wiki
移動先: 案内検索
(ページの作成:「= 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行目:
= Profiling the Tezos node =
+
= Tezosノードのプロファイリング=
  
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></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub>
+
OCamlヒープのメモリプロファイリング<sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> <sub> </sub> </sub> </sub> </sub> </sub> </sub> </sub> / sub> </sub> </sub>
  
* Install an OCaml switch with the statmemprof patch:
+
* statmemprofパッチでOCamlスイッチをインストールする:
  
<code>4.04.2+statistical-memprof</code> or <code>4.06.0+statistical-memprof</code>
+
<code> 4.04.2 + statistical-memprof </code>または<code> 4.06.0 + statistical-memprof </code>
  
* Install <code>statmemprof-emacs</code>.
+
* <code> statmemprof-emacs </code>をインストールします。
* Enable loading statmemprof into the node.
+
*ノードにstatmemprofをロードできるようにする。
  
Add the <code>statmemprof-emacs</code> package as a dependency to the main package, and add <code>let () = Statmemprof_emacs.start 1E-4 30 5</code> to the <code>node_main.ml</code> file.
+
メインパッケージへの依存として<code> statmemprof-emacs </code>パッケージを追加し、<code> node_main.mlに<code> let()= Statmemprof_emacs.start 1E-4 30 5 </code>を追加します。 </code>ファイルです。
  
Arguments:
+
引数:
  
* <code>sampling_rate</code> is the sampling rate of the profiler. Good value: <code>1e-4</code>.
+
* <code> sampling_rate </code>はプロファイラのサンプリングレートです。適切な値:<code> 1e-4 </code>
* <code>callstack_size</code> is the size of the fragment of the call stack which is captured for each sampled allocation.
+
* <code> callstack_size </code>は、サンプリングされた各割り当てごとに取得されるコールスタックのフラグメントのサイズです。
* <code>min_sample_print</code> is the minimum number of samples under which the location of an allocation is not displayed.
+
* <code> min_sample_print </code>は、割り当ての場所が表示されない最小サンプル数です。
* Load sturgeon into emacs, by adding this to your <code>.emacs</code>:
+
*これをあなたの<code> .emacs </code>に追加することで、sturgeonをemacsにロードする:
  
 
::
 
::
  
<pre>(let ((opam-share (ignore-errors (car (process-lines &quot;opam&quot; &quot;config&quot; &quot;var&quot; &quot;share&quot;)))))
+
(opam-share(ignore-errors(car) "プロセスライン" opam "" config "" var "" share "))))))))
(when (and opam-share (file-directory-p opam-share))
+
?(および(およびopam-share(ファイルディレクトリ-p opam-share))
  (add-to-list 'load-path (expand-file-name &quot;emacs/site-lisp&quot; opam-share))))
+
??(add-to-list 'load-path(展開ファイル名 "emacs / site-lisp" opam-share))))
  
(require 'sturgeon)</pre>
+
'チョウザメが必要です)</pre>
* Launch the node then connect to it with sturgeon.
+
*ノードを起動し、チョウザメで接続します。
  
If the process is launched with pid <code>1234</code> then
+
プロセスがpid <code> 1234 </code>で起動された場合
  
 
::
 
::
  
<pre>M-x sturgeon-connect
+
<pre> M-x sturgeon-connect
tezos-nodememprof.1234.sturgeon</pre>
+
tezos-nodememprof.1234.sturgeon </pre>
(tab-completion works for finding the socket name)
+
(タブ補完はソケット名を見つけるために働く)
  
Memory profiling the C heap <sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub>~</sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub>~<sub>~</sub>
+
CヒープのプロファイリングC <ヒント> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ> <サブ>?</サブ> </サブ> </サブ> </sub>?</sub>?</sub>?</sub>?</sub>?</sub>
  
* Install <code>valgrind</code> and <code>massif-visualizer</code>
+
* <code> valgrind </code><code> massif-visualizer </code>をインストールします。
  
 
::
 
::
  
<pre>valgrind --tool=massif tezos-node run ...</pre>
+
<pre> valgrind --tool =マジフのtezos-node run ... </pre>
* Stop with <code>Ctrl-C</code> then display with
+
* <code> Ctrl-C </code>で停止してから表示してください
  
 
::
 
::
  
<pre>massif-visualizer massif.out.pid</pre>
+
<pre> massif-visualizer massif.out.pid </pre>
Performance profiling <sub><sub><sub><sub><sub>~</sub></sub></sub></sub><sub>~</sub>~</sub>~~
+
パフォーマンスプロファイリング<sub> <sub>?</sub>?</sub> ~~ </sub>
  
* Install perf (The <code>linux-perf</code> package for debian.
+
* perf(Debianの<code> linux-perf </code>パッケージをインストールしてください。
  
If the package does not exist for your current kernel, a previous version can be used. substitute the <code>perf</code> command to <code>perf_4.9</code> if your kernel is 4.9).
+
現在のカーネル用のパッケージが存在しない場合は、以前のバージョンを使用することができます。カーネルが4.9の場合は<code> perf </code>コマンドを<code> perf_4.9 </code>に置き換えます)。
  
* Run the node, find the pid.
+
*ノードを実行し、pidを探します。
* Attach perf with <code>perf record -p pid --call-stack dwarf</code>.
+
* <code> perf record -p pid --call-stack dwarf </code>でperfをアタッチします。
  
Then stop capturing with <code>Ctrl-C</code>. This can represent a lot of data. Don't do that for too long. If this is too much you can remove the <code>--call-stack dwarf</code> to get something more manageable, but interpreting the information can be harder.
+
次に、<code> Ctrl-C </code>でキャプチャを停止します。これは、多くのデータを表すことができます。あまり長くはしないでください。これが多すぎると、<code> - call-stack dwarf </code>を削除して管理しやすいものにすることができますが、情報の解釈は難しくなります。
  
* display the result with <code>perf report</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 で表示します。