Berapa satuan waktu yang digunakan strace saat menampilkan waktu yang dihabiskan dalam syscalls?

10

Saat menggunakan perintah stracedengan flag -T, saya ingin tahu berapa satuan waktu yang digunakan untuk menampilkan waktu yang dihabiskan di syscalls? Saya menganggap itu harus dalam hitungan detik, tetapi saya tidak begitu yakin dan sepertinya dihilangkan dari manual.

pengguna311285
sumber

Jawaban:

23

Dari kode sumber :

if (Tflag) {
    ts_sub(ts, ts, &tcp->etime);
    tprintf(" <%ld.%06ld>",
        (long) ts->tv_sec, (long) ts->tv_nsec / 1000);
}

Ini berarti bahwa waktu ditampilkan dalam detik, dengan mikrodetik (dihitung dari nilai nanodetik) setelah titik desimal.

Stephen Kitt
sumber
13

Jika Anda berlari

strace -T  sleep 2

kamu akan lihat

nanosleep({tv_sec=2, tv_nsec=0}, NULL)  = 0 <2.000230>

jadi sepertinya waktu yang dihabiskan adalah dalam hitungan detik.

meuh
sumber
6

Jika Anda menjalankan perintah stracemenggunakan "flag -c" itu akan menampilkan tabel dan waktu dilaporkan dalam detik :

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

dari pria strace

-c

Menghitung waktu, panggilan, dan kesalahan untuk setiap panggilan sistem dan melaporkan ringkasan saat keluar dari program. Di Linux, ini mencoba untuk menunjukkan waktu sistem (waktu CPU dihabiskan untuk menjalankan di kernel) terlepas dari waktu jam dinding. Jika -c digunakan dengan -f atau -F (di bawah), hanya total agregat untuk semua proses yang dilacak disimpan.


sumber