หน่วยเวลาที่ strace ใช้คืออะไรเมื่อแสดงเวลาที่ใช้ใน syscalls


10

เมื่อใช้คำสั่งstraceกับการตั้งค่าสถานะ-Tฉันต้องการที่จะรู้ว่าหน่วยเวลาที่ใช้ในการแสดงเวลาที่ใช้ใน syscalls คืออะไร? ฉันคิดว่ามันควรจะเป็นในไม่กี่วินาที แต่ฉันไม่แน่ใจและดูเหมือนว่าจะถูกตัดออกจากคู่มือ

คำตอบ:


23

จากซอร์สโค้ด :

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

ซึ่งหมายความว่าเวลาจะแสดงเป็นวินาทีโดยมีไมโครวินาที (คำนวณจากค่านาโนวินาที) หลังจุดทศนิยม


13

ถ้าคุณวิ่ง

strace -T  sleep 2

แล้วคุณจะได้เห็น

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

ดังนั้นดูเหมือนว่าเวลาที่ใช้ในหน่วยวินาที


6

หากคุณรันคำสั่งstraceโดยใช้ "flag -c" คำสั่งจะแสดงตารางและเวลาจะรายงานในไม่กี่วินาที :

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

จากผู้ชายของ strace

-ค

นับเวลาการโทรและข้อผิดพลาดสำหรับการเรียกระบบแต่ละครั้งและรายงานสรุปการออกจากโปรแกรม บน Linux สิ่งนี้จะพยายามแสดงเวลาของระบบ (เวลา CPU ที่ใช้ในเคอร์เนล) โดยไม่ขึ้นกับเวลาของนาฬิกาแขวน หากใช้ -c กับ -f หรือ -F (ด้านล่าง) จะมีการเก็บยอดรวมรวมสำหรับกระบวนการที่ติดตามทั้งหมดเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.