Ao usar o comando strace
com o sinalizador -T
, gostaria de saber qual é a unidade de tempo usada para exibir o tempo gasto nos syscalls? Suponho que demore alguns segundos, mas não tenho muita certeza e parece ter sido omitido no manual.
Ao usar o comando strace
com o sinalizador -T
, gostaria de saber qual é a unidade de tempo usada para exibir o tempo gasto nos syscalls? Suponho que demore alguns segundos, mas não tenho muita certeza e parece ter sido omitido no manual.
Respostas:
Do código fonte :
if (Tflag) {
ts_sub(ts, ts, &tcp->etime);
tprintf(" <%ld.%06ld>",
(long) ts->tv_sec, (long) ts->tv_nsec / 1000);
}
Isso significa que o tempo é mostrado em segundos, com microssegundos (calculados a partir do valor em nanossegundos) após o ponto decimal.
Se você executar o comando strace
usando o "sinalizador -c", ele mostrará uma tabela e o tempo será relatado em segundos :
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
-c
Conte o tempo, as chamadas e os erros de cada chamada do sistema e relate um resumo da saída do programa. No Linux, isso tenta mostrar o tempo do sistema (tempo de CPU gasto em execução no kernel) independentemente do tempo do relógio de parede. Se -c for usado com -f ou -F (abaixo), apenas os totais agregados para todos os processos rastreados serão mantidos.