Linux函数分析器输出

时间:2018-08-07 08:59:15

标签: linux profiling ftrace

我想分析内核中的代码流,以了解瓶颈在哪里。我发现函数事件探查器为我做到了: https://lwn.net/Articles/370423/ 不幸的是,我看到的输出对我来说没有意义。 在上面的链接中,功能分析器的输出为:

 Function        Hit        Time              Avg
--------          ---       ----              ---   
schedule         22943    1994458706 us     86931.03 us

其中“时间”是运行期间在此函数内花费的总时间。因此,如果我有一个调用function_B的function_A,则如果我正确理解了输出,则function_A的“时间”也将包括function_B的持续时间。

当我在我的PC上实际运行此命令时,我看到另一个显示为输出的新列:

Function           Hit     Time          Avg          s^2   
--------           ---     ----          ---          ---           
__do_page_fault    3077   477270.5us    155.109 us  148746.9us
(more functions..)

s ^ 2代表什么?不能偏离标准偏差,因为它高于平均值...

我从用户空间测量了这段代码流的总持续时间,得出了400毫秒。总结s ^ 2列时,它接近400毫秒。这使我认为,也许是在__do_page_fault中花费的“纯”时间,其中不包括嵌套函数的持续时间。

这是正确的吗?我没有找到s ^ 2列的任何文档,因此我对自己的结论犹豫不决。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以看到计算final EditText taskEditText = new EditText(MainActivity.this); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(taskEditText, InputMethodManager.SHOW_IMPLICIT); here的代码。似乎这是方差(标准差的平方)。如果您从示例中的数字中减去根,则会得到385 us,接近示例中的平均值。

标准差仍大于平均值,但仍为fine