use*_*285 10 linux process system-calls strace syscalls
使用strace
带有标志的命令时-T
,我想知道用于显示系统调用时间的时间单位是什么?我认为它应该在几秒钟内,但我不太确定,手册中似乎省略了它。
Ste*_*itt 23
从源代码:
if (Tflag) {
ts_sub(ts, ts, &tcp->etime);
tprintf(" <%ld.%06ld>",
(long) ts->tv_sec, (long) ts->tv_nsec / 1000);
}
Run Code Online (Sandbox Code Playgroud)
这意味着时间以秒为单位显示,小数点后为微秒(从纳秒值计算)。
meu*_*euh 13
如果你跑
strace -T sleep 2
Run Code Online (Sandbox Code Playgroud)
你会看见
nanosleep({tv_sec=2, tv_nsec=0}, NULL) = 0 <2.000230>
Run Code Online (Sandbox Code Playgroud)
所以看起来花费的时间以秒为单位。
小智 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
Run Code Online (Sandbox Code Playgroud)
-C
计算每个系统调用的时间、调用和错误,并在程序退出时报告摘要。在 Linux 上,这会尝试显示独立于挂钟时间的系统时间(在内核中运行的 CPU 时间)。如果 -c 与 -f 或 -F(如下)一起使用,则仅保留所有跟踪进程的汇总总数。
归档时间: |
|
查看次数: |
4363 次 |
最近记录: |