システムコールに費やされた時間を表示するとき、straceはどの時間単位を使用しますか?

システムコールに費やされた時間を表示するとき、straceはどの時間単位を使用しますか?

straceフラグと一緒にコマンドを使用するときに、-Tシステムコールにかかった時間を表示するために使用される時間単位が何であるかを知りたいです。秒単位でやらなければならないようですがよく分からないしマニュアルにも省略されているようです。

答え1

~からソースコード:

if (Tflag) {
    ts_sub(ts, ts, &tcp->etime);
    tprintf(" <%ld.%06ld>",
        (long) ts->tv_sec, (long) ts->tv_nsec / 1000);
}

つまり、時間は小数点以下のマイクロ秒(ナノ秒値で計算)で秒単位で表示されます。

答え2

走れば

strace -T  sleep 2

あなたは見るでしょう

nanosleep({tv_sec=2, tv_nsec=0}, NULL)  = 0 <2.000230>

だからかかった時間は秒単位のようです。

答え3

"flag -c"でコマンドを実行すると、テーブルが表示され、strace時間が報告されます。第二:

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

ストレイスから来た男

-氏

各システムコールの時間、呼び出し、およびエラーを計算し、プログラムの終了時に要約を報告します。 Linuxでは、ウォールクロック時間に関係なく、システム時間(カーネルで実行されるのに費やされたCPU時間)を表示しようとします。 -cを-fまたは-F(下)と組み合わせて使用​​すると、追跡されたすべてのプロセスの合計のみが維持されます。

答え4

これはstraceの要約を見るとわかります。たとえば、

$ strace -ce trace=write -p $(pidof app)
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.061558          17      3544           write
------ ----------- ----------- --------- --------- ----------------
100.00    0.061558                  3544           total
  • システムコールの書き込みに要した合計時間= 0.061558秒。または 0.061558*1000000 = 61558 マイクロ秒 (usec)
  • usec/call=61558 usec/3544 call=17.778

関連情報