gpt4 book ai didi

linux - strace -c 不显示正确的秒数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:15 25 4
gpt4 key购买 nike

我在 RHEL 7 和 RHEL 6 上得到了 strace -c 的结果对于这个命令:

strace -c /bin/sleep 20

而且我不明白为什么 nanosleepseconds 列等于 0。我原以为它是 20。

  0.00    0.000000           0         1           nanosleep

这是一份完整的 strace 报告:

$ strace -c /bin/sleep 20 
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.000019 1 15 12 open
0.00 0.000000 0 1 read
0.00 0.000000 0 5 close
0.00 0.000000 0 8 6 stat
0.00 0.000000 0 3 fstat
0.00 0.000000 0 9 mmap
0.00 0.000000 0 3 mprotect
0.00 0.000000 0 1 munmap
0.00 0.000000 0 3 brk
0.00 0.000000 0 1 1 access
0.00 0.000000 0 1 nanosleep
0.00 0.000000 0 1 execve
0.00 0.000000 0 1 arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00 0.000019 52 19 total

并且在详细的报告中有对nanosleep的调用:

nanosleep({20, 0}, NULL)                = 0

所以秒必须是20,而不是0。你怎么看?

最佳答案

来自 strace(1) 的手册页:

-c On Linux, this attempts to show system time (CPU time spent running in the kernel)

我认为:

当进程调用 nanosleep() 时,它要求内核暂停一段时间。内核设置一些东西(比如一些标志、计时器、时间戳……),挂起调用进程,然后去做其他事情。strace(1) 报告内核为此花费的时间,而不是进程保持挂起的时间。

可能是这个 -c strace 选项可以被认为是“-cost”:这个系统调用花费多少时间?

关于linux - strace -c 不显示正确的秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42535397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com