strace
フラグを指定してコマンドを-T
使用する場合、syscallsで費やされた時間を表示するために使用される時間単位は何ですか?数秒でいいと思いますが、定かではなくマニュアルから省略されているようです。
strace
フラグを指定してコマンドを-T
使用する場合、syscallsで費やされた時間を表示するために使用される時間単位は何ですか?数秒でいいと思いますが、定かではなくマニュアルから省略されているようです。
回答:
ソースコードから:
if (Tflag) {
ts_sub(ts, ts, &tcp->etime);
tprintf(" <%ld.%06ld>",
(long) ts->tv_sec, (long) ts->tv_nsec / 1000);
}
これは、時間が秒単位で表示され、小数点以下はマイクロ秒(ナノ秒値から計算)であることを意味します。
strace
「フラグ-c」を使用してコマンドを実行すると、テーブルが表示され、時間は秒単位で報告されます。
strace -c -p 3569 # 3569 is PID
strace: Process 3569 attached
^Cstrace: Process 3569 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
99.73 0.016000 8 1971 poll
0.16 0.000025 0 509 75 futex
0.06 0.000010 0 1985 1966 recvmsg
0.06 0.000009 0 2336 mprotect
0.00 0.000000 0 478 read
0.00 0.000000 0 13 write
0.00 0.000000 0 29 mmap
0.00 0.000000 0 9 munmap
0.00 0.000000 0 18 writev
0.00 0.000000 0 351 madvise
0.00 0.000000 0 1 restart_syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.016044 7700 2041 total
-c
各システムコールの時間、呼び出し、エラーをカウントし、プログラムの終了に関する概要を報告します。Linuxでは、これは壁時計時間とは無関係にシステム時間(カーネルでの実行に費やされたCPU時間)を表示しようとします。-cが-fまたは-F(下記)と共に使用される場合、すべてのトレースされたプロセスの合計のみが保持されます。