Performance 解释strace以表征延迟/延迟
我在Linux内核2.6.27.45上的嵌入式系统上运行了一个守护进程。其中一个过程没有按预期的那样执行,我尝试使用strace进行进一步分析。我在网上的一些帖子后面添加了一些功能,将附加进程的堆栈跟踪打印到strace。 使用的命令是:Performance 解释strace以表征延迟/延迟,performance,strace,Performance,Strace,我在Linux内核2.6.27.45上的嵌入式系统上运行了一个守护进程。其中一个过程没有按预期的那样执行,我尝试使用strace进行进一步分析。我在网上的一些帖子后面添加了一些功能,将附加进程的堆栈跟踪打印到strace。 使用的命令是: enter code here strace -T -i -r -tt -q -O 1 -o /tmp/syscallsM -p $tpid 在对第1列进行排序后,我得到如下输出: 0.966638 [088cea24: 360eead8 08f9e71c
enter code here
strace -T -i -r -tt -q -O 1 -o /tmp/syscallsM -p $tpid
在对第1列进行排序后,我得到如下输出:
0.966638 [088cea24: 360eead8 08f9e71c ]089985d4 ]08998e20 ]12c9352c ]1058e71c ]10551388 ]1054e120 ]10517f40 ]105143e0 ]10514c1c ]write(33, "x", 1) = 1 <0.028588>
0.417500 [088d625c: 3b3e1878 121576e8 ]12163e1c ]1216473c ]12b6e75c ]112bc3e0 ]112d7880 ]112d7aa0 ]112d6b00 ]112d9aec ]112fd000 ]ioctl(29, 0x20004c01, 0) = 0 <0.000032>
0.282577 [1019e878: 30766c98 1374a008 ]1374a1f0 ]10198854 ]10198b0c ]1019908c ]10195cb4 ]10195e08 ]1019611c ]1019a810 ]10191fa0 ]--- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
0.252104 [082f4808: 35a55a08 0899e314 ]1217ecb8 ]11c47918 ]1219a614 ]12bfeee4 ]1058e71c ]105c51f0 ]105c5980 ]10578674 ]105bfa4c ]futex(0x89ba380, FUTEX_LOCK_PI, 1) = 0 <0.000033>
我的问题是:
1如果我们以0.252104开头的行为例,是否意味着252ms包括堆栈1019E878,…10191fa0上的所有函数以及当前堆栈082f4808…1219a614中调用futex之前的执行时间,..10578674加上任务计划完成的时间加上futex调用的执行时间,即33us
2有没有办法弄清楚futex呼叫是否真的导致流程等待
3内核在进行系统调用时是否会将此任务调度出去
4在以0.282577开始的线路中,SIGALARM时间是否导致283ms延迟?
5在以0.417500开头的线路中,进行ioctl调用是否会导致418毫秒的延迟?虽然ioctl本身是在32us内完成的。
谢谢和问候