以上来自一个正常工作但空闲的 Apache 子进程,该进程正在等待收到请求。 但是“strace -p”非常有用,因为它消除了大量的猜测,并且通常不需要重新启动具有更广泛日志记录的应用程序(甚至重新编译它)。 复制 root@dev:~# strace-p15427Process15427attached-interrupt to quit futex(0x402f4900,FUTEX_WAIT,2,NULLPro...
Strace FUTEX_WAIT strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。 strace的最简单的用法就是执行一个指定的命令,在指定的命令结束之后它也就退出了。在命令执行的过程中,strace会记录和解析命令...
你的程序突然消耗了大量的CPU,或者程序似乎被挂起了,那么我们通过进程的pid号看看此刻它正在做什么 root@dev:~# strace -p 15427 Process 15427 attached - interrupt to quit futex(0x402f4900, FUTEX_WAIT, 2, NULL Process 15427 detached 通过跟踪,你知道程序挂起的原因是正在调用futex()。 程序的时间花在什...
$ sudo strace -c -p 3569 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.000...
futex(0x402f4900, FUTEX_WAIT, 2, NULL Process 15427 detached 在这个示例里进程在调用futex的时候被挂起了。顺带一说,在这个例子里调用futex挂起可能有很多的原因(Futex是Linux的一种线程同步原语)。上述场景是个正常工作等待处理请求的apache子进程。
然后我看人java调futex,wait之后就直接跟时间长度了,pthread库又加了一堆乱七八糟的flag我猜测大概是老版本linux的用法?也可以理解,毕竟作为一个库,兼容性还是第一位综上来看,我觉得大部分性能损耗在取当前时间这块。又因为timespec存在进位问题,加法计算也损耗了小部分。futex的调用方式虽然未知,不过估计应该不会有...
1.86 0.000148 7 22 1 futex 1.61 0.000128 18 7 wait4 1.02 0.000081 1 133 48 openat 0.84 0.000067 1 116 brk 0.73 0.000058 19 3 sendmmsg 0.72 0.000057 1 68 rt_sigaction 0.44 0.000035 7 5 pipe 0.42 0.000033 0 220 148 lseek 0.37 0.000029 3 11 1 ioctl ...
root@dev:~# strace -p 15427 Process 15427 attached - interrupt to quit futex(0x402f4900, FUTEX_WAIT, 2, NULL Process 15427 detached 通过跟踪,你知道程序挂起的原因是正在调用futex()。 程序的时间花在什么地方 你总是希望程序能够按照你的意愿去工作,也希望它能在正确的时间做正确的事情,甚至希望它是...
strace -fp pid , 可以跟踪所有线程, 进程的系统调用。 [root@xxxx]strace -p 24091 Process xxx attached - interrupt to quit [ Process PID=24091 runs in 32 bit mode. ] futex(0xc5bbbd8, FUTEX_WAIT, 24215 NULL 复制代码 你的问题不是strace不能跟踪,而是你的线程锁住了。 futex应该是内核里对pthr...
1.最后,在strace输出中,搜索第二个参数(操作类型)为FUTEX_WAIT的futex调用。例如:futex(0x7f58a3...