Linux:信号:SIGUSR1:信号处理程序:测量执行时间?

时间:2014-08-26 10:36:37

标签: c linux performance signals handler

我正在使用linux信号(特别是SIGUSR1SIGUSR2)将信号从内核空间(Linux内核模块)发送到用户空间(使用内核模块的应用程序)。这些信号处理得当,功能正常。

现在我想测量信号处理程序的执行时间(最好是以纳秒或微秒为单位)。

我尝试使用gprof,但它没有显示信号处理程序的执行时间。除此之外,它还以秒为单位显示执行时间。

我也尝试使用Ftrace("nop" tracer, function_profile_enabled),但这也不起作用。

如何衡量信号处理程序的执行时间?

1 个答案:

答案 0 :(得分:1)

对于用户空间计划,请阅读time(7),然后使用clock_gettime(2)CLOCK_REALTIME来衡量时间。不要指望纳秒精度。

仔细阅读signal(7)

我不会将信号用于内核< - >用户空间通信。在Linux上,我建议将netlink(7)netlink(3)函数一起使用(或在内核模块中为该通信提供一个设备)。您可以使用一些事件循环来处理这些问题(例如使用poll(2) ...)

另见strace(1);它有系统调用的原始计时设施......