热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

什么是锁步采样?

如何解决《什么是锁步采样?》经验,为你挑选了1个好方法。

我在几篇关于分析应用程序的帖子中看过这个术语,但我不明白它实际意味着什么以及它如何影响分析结果.

我在这里看过dtrace:

速率也增加到199赫兹,因为捕获内核堆栈比用户级堆栈便宜得多.奇数编号99和199用于避免与其他活动同步采样并产生误导性结果.

这里为perf:

-F 99:99赫兹的样品(每秒样品).我有时会比这更快地采样(高达999赫兹),但这也是成本开销.99赫兹应该可以忽略不计.此外,值"99"而不是"100"是为了避免锁步采样,这会产生偏差的结果.

从我所看到的所有剖析器应该避免锁步采样,因为结果可能"倾斜"和"误导",但我不明白为什么.我想这个问题适用于所有的分析器,但我对linux上的perf感兴趣.



1> Barmar..:

锁步采样是指剖析采样以与应用程序中的循环相同的频率发生。这样的结果是样本经常出现在循环中的同一位置,因此它将认为该操作是最常见的操作,并且可能是瓶颈。

打个比方,如果您试图确定道路是否拥堵,并每24小时进行一次采样。该样本可能与流量变化保持同步;如果是在上午8点或下午5点,则将与高峰时间相吻合,并得出道路非常繁忙的结论;如果是凌晨3点,则会得出结论,实际上几乎没有流量。

为了使采样准确,需要避免这种情况。理想情况下,采样应比应用程序中的任何周期或以随机间隔频繁得多,以便在任何特定操作中发生采样的机会与操作所花费的时间成正比。但这通常是不可行的,因此,下一个最好的选择是使用与程序周期的可能频率不一致的采样率。如果程序中有足够的循环,则应确保从每个循环开始时以许多不同的偏移量进行采样。

将此与上述类比联系起来,每23小时或每天随机进行一次采样将导致样本最终在一天中的所有时间遇到。每23天的采样周期将包括一天中的所有小时。这样可以更全面地了解流量水平。而且每小时采样将在短短几周内提供完整的图像。

我不确定为什么奇数频率有可能确保这一点。它似乎是基于这样一个假设,即程序操作存在自然频率,并且这些频率是偶数。


推荐阅读
author-avatar
不要说话-2502882353
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有