`strace -r`과 `strace -T` 옵션의 차이점은 무엇입니까?

`strace -r`과 `strace -T` 옵션의 차이점은 무엇입니까?

둘 사이의 차이점은 무엇입니까? 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

   -r          Print a relative timestamp upon entry to each system call.  This records the time difference between  the  beginning  of
               successive system calls.

   -T          Show the time spent in system calls.  This records the time difference between the beginning and the end of each  system
               call.

나의 유일한 설명은 -T각 호출에 소요된 시간을 표시하지만 -r각 시스템 호출 후 대기에 소요된 시간도 고려한다는 것입니다.

strace이는 명령 에서 해당 스니펫을 볼 때 명령 uptime이 각 호출 에 아래보다 오래 걸리는 것을 -r표시 한다는 사실에서 뒷받침되는 것 같습니다 . -T아래를 참조하세요:

0.000039 uname({sysname="Linux", nodename="ip-172-31-55-20", ...}) = 0
0.000043 open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
0.000045 read(3, "0\n", 8192)      = 2
0.000035 close(3)                  = 0

&

uname({sysname="Linux", nodename="ip-172-31-55-20", ...}) = 0 <0.000010>
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3 <0.000018>
read(3, "0\n", 8192)                    = 2 <0.000014>
close(3)                                = 0 <0.000023>

이 올바른지?

답변1

정말 그렇습니다. 그렇습니다.

표시된 추가 시간 -r은 대기에 소요된 시간이 아니라 시스템 호출(계산, 메모리 작업...)과 관련되지 않은 다른 작업을 수행하는 데 소요된 시간입니다.

답변2

이것을 고려하여답변, 계산 같은 것 외에는 확실히 시간이 좀 걸릴 것 같아요스트레스그 자체.

방법스트레스작업으로 인해 커널은 각 시스템 호출의 시작과 끝에서 추적 프로그램을 중지합니다.스트레스이를 확인한 후 실행을 재개할 수 있습니다.

따라서 연속적인 시스템 호출 시작 사이의 시간 차이에는 시스템 호출에 소요된 시간의 일부가 포함되어야 합니다.스트레스그 자체.

관련 정보