Linux函数分析器输出
我想在内核中分析一个代码流,以了解瓶颈在哪里。我发现function profiler为我做的就是: 不幸的是,我看到的输出对我来说没有意义。 从上面的链接中,函数探查器的输出为:Linux函数分析器输出,linux,profiling,ftrace,Linux,Profiling,Ftrace,我想在内核中分析一个代码流,以了解瓶颈在哪里。我发现function profiler为我做的就是: 不幸的是,我看到的输出对我来说没有意义。 从上面的链接中,函数探查器的输出为: Function Hit Time Avg -------- --- ---- --- schedule 22943 1994458706 us 86931.03 us
Function Hit Time Avg
-------- --- ---- ---
schedule 22943 1994458706 us 86931.03 us
其中“Time”是运行期间在此函数内花费的总时间。因此,如果我有调用函数B的函数A,如果我正确理解了输出,那么为函数A测量的“时间”也包括函数B的持续时间
当我在我的电脑上实际运行此功能时,我会看到另一个新的输出列:
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毫秒。这让我认为,可能是“纯”时间花费在了“页面”错误上,这不包括嵌套函数的持续时间
这是正确的吗?我没有找到s^2专栏的任何文档,所以我对我的结论犹豫不决
谢谢大家! 您可以看到计算
s^2
列的代码。这似乎就是方差(标准偏差平方)。如果从示例中的数字中取根,则得到385 us,这更接近示例中的平均值
标准偏差仍然大于平均值,但事实并非如此