Isso é muito certo, sim.
O tempo extra mostrado por -r
não é tempo gasto esperando, é hora de fazer outras coisas que não envolvem syscalls (cálculos, manipulações de memória ...).
Qual é a diferença entre os dois? Nas man pages, diz:
-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.
Minha única interpretação é que -T
mostra o tempo gasto apenas para cada chamada, enquanto -r
também leva em conta qualquer tempo gasto esperando após cada syscall.
Isso parece ser suportado pelo fato de que, ao analisar os snippets correspondentes de um strace
no comando uptime
, o comando -r
está exibindo tempos mais longos por chamada que -T
abaixo. Veja abaixo:
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
e
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>
Está certo?