我在几篇关于分析应用程序的文章中见过这个术语,但我不明白它的实际含义以及它如何影响分析结果。
我看过了,为dtrace而来
这个速率也增加到199赫兹,因为捕获内核堆栈比用户级堆栈便宜得多。奇数率( 99和199 )用于避免与其他活动同步取样,并产生误导性结果。
在这里享受特权
-F 99:样品在99赫兹(采样每秒)。我有时会比这个速度更快(高达999赫兹),但这也是开销。99赫兹应该可以忽略不计。此外,值'99‘而不是'100’是为了避免锁步采样,这会产生扭曲的结果。
据我所见,所有的分析器都应该避免分步抽样,因为结果可能会“扭曲”和“误导”,但我不明白为什么。我想这个问题适用于所有的分析器,但是我对linux上的perf感兴趣。
发布于 2017-08-02 21:08:55
锁步采样是当分析样本发生在与应用程序中的循环相同的频率时。这样做的结果是,该示例通常发生在循环中的同一位置,因此它会认为该操作是最常见的操作,也可能是瓶颈。
比方说,如果你试图确定一条道路是否拥堵,每24小时进行一次抽样调查。这个样本很可能会随着交通的变化而变化;如果是在早上8点或下午5点,它将与高峰时间同时进行,得出的结论是道路非常繁忙;如果是凌晨3点,它就会得出结论,实际上根本没有交通。
为了使取样准确,需要避免这种情况。理想情况下,示例应该比应用程序中的任何周期都频繁得多,或者是在任意时间间隔内,因此在任何特定操作中发生这种情况的可能性与操作所需的时间成正比。但是这通常是不可行的,所以下一个最好的方法是使用一个与程序周期的可能频率不一致的采样率。如果程序中有足够的周期,这应该确保样本在每个周期开始时发生许多不同的偏移。
将此与上述类比联系起来,每23小时或每天随机抽样将使样本最终遇到一天中的所有时间;每23天抽样周期将包括一天中的所有时间。这产生了一个更完整的交通水平的图片。每小时取样就能在几个星期内提供完整的图片。
我不知道为什么奇数频率能保证这一点。它似乎是基于这样一个假设,即程序操作有固有频率,而且这些频率是均匀的。
https://stackoverflow.com/questions/45470758
复制相似问题