시스템 호출에 소요된 시간을 표시할 때 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

관련 정보