strace가 syscall에 소요 된 시간을 표시 할 때 사용하는 시간 단위는 무엇입니까?


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"flag -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의 남자에서

-씨

각 시스템 호출에 대한 시간, 호출 및 오류를 계산하고 프로그램 종료에 대한 요약을보고하십시오. Linux에서는 벽시계 시간과 관계없이 시스템 시간 (커널에서 실행 한 CPU 시간)을 표시하려고합니다. -c를 -f 또는 -F (아래)와 함께 사용하면 추적 된 모든 프로세스에 대한 총계 만 유지됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.