我有一个应该与CPU绑定的程序,但是它使用的CPU远远少于100%,并且没有尽可能快地消耗输入。这意味着我的进程正在阻塞或在某处休眠。
如何查找大部分时间阻塞了我的进程的呼叫?是否有工具或调试过程可以测量该时间在每个阻塞的系统调用中处于休眠状态的时间?
答案 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
[...]