둘 사이의 차이점은 무엇입니까? 매뉴얼 페이지에는 다음과 같이 나와 있습니다.
-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
이것을 고려하여답변, 계산 같은 것 외에는 확실히 시간이 좀 걸릴 것 같아요스트레스그 자체.
방법스트레스작업으로 인해 커널은 각 시스템 호출의 시작과 끝에서 추적 프로그램을 중지합니다.스트레스이를 확인한 후 실행을 재개할 수 있습니다.
따라서 연속적인 시스템 호출 시작 사이의 시간 차이에는 시스템 호출에 소요된 시간의 일부가 포함되어야 합니다.스트레스그 자체.