在哪个呼叫上,该进程被阻止?

时间:2019-01-09 21:05:49

标签: c linux debugging sleep blocking

我有一个应该与CPU绑定的程序,但是它使用的CPU远远少于100%,并且没有尽可能快地消耗输入。这意味着我的进程正在阻塞或在某处休眠。

如何查找大部分时间阻塞了我的进程的呼叫?是否有工具或调试过程可以测量该时间在每个阻塞的系统调用中处于休眠状态的时间?

1 个答案:

答案 0 :(得分:3)

strace是一个选项:

$ strace -wc sleep 1
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 99.96    1.000146     1000146         1           nanosleep
  0.01    0.000131         131         1           execve
  0.01    0.000082          10         8           mmap
[...]
相关问题