strace
わかりました、それでは秘密ではありません。広い出力ボリューム。 (出力を少しフィルタリングするオプションがあることを知っています。)
strace
生のログを人間が読みやすい形式で処理できるツールはありますか?
どのような「デコード」を探していますか?まあ、デザイン作業レベルはstrace
非常に低いです。最も重要な点をまとめたものを探しています。例えば、FD4は、異なる時間に異なるファイルを指すことができる。機械私ではなく、これを追跡してください。 PIDも同様です。トレースなどの様々な瞬間にプロセスツリーを見ることができることを願っています。 GUIツールがあればいいのですが、わかりやすくするならテキストベースのツールでも大丈夫です。
答え1
strace ランタイムサマリー
strace
-c
さまざまなシステムコールの概要レポートを提供するスイッチがあります。
-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
straceのもう一つの選択肢であるstrace +
メモ:このプロジェクト、ストレス+はメンテナンスされなくなり、実際には多くの機能がスイッチを介してデフォルトにstrace
マージ-k
されました。したがって、strace
スイッチがマージされたときにバージョンが少なくとも4.9以上であることを確認することをお勧めします。
-k Print the execution stack trace of the traced processes after
each system call (experimental).
strace+プロジェクトページからインポート
strace +は、各システムコールに関連するスタックトレースを収集する拡張バージョンのstraceです。システムコールには高価なユーザーカーネルコンテキストスイッチが必要なため、パフォーマンスのボトルネックの原因となることがよくあります。 strace+を使用すると、プログラマーはより詳細なシステムコール分析を実行し、どのコールサイトが高価なシステムコールを発生させるかを決定でき、最適化の可能性もあります。