Diferença entre as opções 'strace -r' e 'strace -T'?

1

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?

    
por nehalpatels 24.11.2016 / 04:58

1 resposta

1

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 ...).

    
por 24.11.2016 / 06:33