トレースログのデコード/要約

トレースログのデコード/要約

straceわかりました、それでは秘密ではありません。広い出力ボリューム。 (出力を少しフィルタリングするオプションがあることを知っています。)

strace生のログを人間が読みやすい形式で処理できるツールはありますか?

どのような「デコード」を探していますか?まあ、デザイン作業レベルはstrace非常に低いです。最も重要な点をまとめたものを探しています。例えば、FD4は、異なる時間に異なるファイルを指すことができる。機械私ではなく、これを追跡してください。 PIDも同様です。トレースなどの様々な瞬間にプロセスツリーを見ることができることを願っています。 GUIツールがあればいいのですが、わかりやすくするならテキストベースのツールでも大丈夫です。

答え1

strace ランタイムサマリー

strace-cさまざまなシステムコールの概要レポートを提供するスイッチがあります。

strace のマニュアルページから抜粋
-c      Count time, calls, and errors for each system call and report a 
        summary on program exit.  On Linux, this attempts to show system 
        time (CPU  time  spent  running in the kernel) independent of wall 
        clock time.  If -c is used with -f or -F (below), only aggregate 
        totals for all traced processes are kept.

はい

$ strace -c systemctl list-unit-files --type=service
...
...
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 51.81    0.001831        1831         1           waitid
  8.15    0.000288           7        39           mmap
  7.89    0.000279          19        15           read
  6.11    0.000216           8        26           mprotect
  4.56    0.000161          11        15           open
  2.91    0.000103         103         1           connect
  2.24    0.000079          79         1           clone
  2.15    0.000076          38         2           statfs
  2.01    0.000071           4        19           close
  1.95    0.000069           5        13           poll
  1.90    0.000067           5        14         2 recvmsg
  1.70    0.000060           4        16           fstat
  0.88    0.000031           8         4         3 stat
  0.82    0.000029          29         1           socket
  0.65    0.000023           8         3           munmap
  0.57    0.000020           5         4           sendto
  0.42    0.000015           5         3           ioctl
  0.40    0.000014           7         2           lstat
  0.40    0.000014           7         2           sendmsg
  0.34    0.000012           4         3           brk
  0.23    0.000008           8         1           pipe
  0.23    0.000008           4         2           fcntl
  0.20    0.000007           4         2           rt_sigaction
  0.20    0.000007           7         1         1 access
  0.20    0.000007           4         2           geteuid
  0.17    0.000006           6         1           execve
  0.14    0.000005           5         1           getsockname
  0.11    0.000004           4         1           dup2
  0.11    0.000004           4         1           getresuid
  0.11    0.000004           4         1           getresgid
  0.11    0.000004           4         1           arch_prctl
  0.08    0.000003           3         1           rt_sigprocmask
  0.08    0.000003           3         1           getrlimit
  0.08    0.000003           3         1           set_tid_address
  0.08    0.000003           3         1           set_robust_list
  0.00    0.000000           0         4           write
  0.00    0.000000           0         1           kill
------ ----------- ----------- --------- --------- ----------------
100.00    0.003534                   207         6 total

トレースログの事後分析

私はこのPerlスクリプトを見つけました。Strace_analyzer.plこれはあなたが探しているようです。

使用法
$ ./strace_analyzer_ng_0.03.pl -help
Usage: strace-analyze [OPTION]… [FILE]
Analyzes strace output for IO functions. It creates statistics
on IO functions and performance of the read and write functions.
The strace file should have been run with ‘strace -tt [PROGRAM]

上記のリンクページに出力例があります。この投稿は長すぎます。ここでPastebin.comにも投稿しました。

strace、ioappsの代替

'というアプリを見つけました。ioappsこれにより、アプリケーションの実行中に実行される操作をより直感的に理解できます。おそらく、これはログを処理するよりも達成したい作業に適していますstrace

使用法
  $ ioprofiler-trace thunderbird

読み込まれたら、Thunderbirdウィンドウを閉じて、「ioproftrace.log」というトレースログがあることを確認します。これはログのデフォルト名です(-oコマンドラインオプションを使用して別の名前を指定できます)。

  $ ls -l ioproftrace.log 
  -rw-r--r-- 1 user user 74890554 Apr  4 22:04 ioproftrace.log

大丈夫に見えるので、ioprofilerを実行できます。

  $ ioprofiler ioproftrace.log 
グラフィカルユーザーインターフェースの例

   SS1

straceのもう一つの選択肢であるstrace +

メモ:このプロジェクト、ストレス+はメンテナンスされなくなり、実際には多くの機能がスイッチを介してデフォルトにstraceマージ-kされました。したがって、straceスイッチがマージされたときにバージョンが少なくとも4.9以上であることを確認することをお勧めします。

strace のマニュアルページから抜粋
-k          Print the execution stack trace of the traced processes after 
            each system call (experimental).
strace+プロジェクトページからインポート

strace +は、各システムコールに関連するスタックトレースを収集する拡張バージョンのstraceです。システムコールには高価なユーザーカーネルコンテキストスイッチが必要なため、パフォーマンスのボトルネックの原因となることがよくあります。 strace+を使用すると、プログラマーはより詳細なシステムコール分析を実行し、どのコールサイトが高価なシステムコールを発生させるかを決定でき、最適化の可能性もあります。

関連情報