systraceで費やされた時間を表示するときにstraceが使用する時間単位は何ですか?


10

straceフラグを指定してコマンドを-T使用する場合、syscallsで費やされた時間を表示するために使用される時間単位は何ですか?数秒でいいと思いますが、定かではなくマニュアルから省略されているようです。

回答:


23

ソースコードから:

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

これは、時間が秒単位で表示され、小数点以下はマイクロ秒(ナノ秒値から計算)であることを意味します。


13

走れば

strace -T  sleep 2

あなたは見るでしょう

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

つまり、費やされた時間は秒単位のようです。


6

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

straceの男から

-c

各システムコールの時間、呼び出し、エラーをカウントし、プログラムの終了に関する概要を報告します。Linuxでは、これは壁時計時間とは無関係にシステム時間(カーネルでの実行に費やされたCPU時間)を表示しようとします。-cが-fまたは-F(下記)と共に使用される場合、すべてのトレースされたプロセスの合計のみが保持されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.