什么是锁步采样?
What is lockstep sampling?
我在几篇关于分析应用程序的帖子中看到过这个术语,但我不明白它的实际含义以及它如何影响分析结果。
我看过here for dtrace:
The rate is also increased to 199 Hertz, as capturing kernel stacks is
much less expensive than user-level stacks. The odd numbered rates, 99
and 199, are used to avoid sampling in lockstep with other activity
and producing misleading results.
-F 99: sample at 99 Hertz (samples per second). I'll sometimes sample faster than this (up to 999 Hertz), but that also costs overhead. 99
Hertz should be negligible. Also, the value '99' and not '100' is to
avoid lockstep sampling, which can produce skewed results.
据我所知,所有分析器都应避免锁步采样,因为结果可能是 "skewed" 和 "misleading",但我不明白为什么。我想这个问题适用于所有分析器,但我对 linux.
上的性能感兴趣
锁步采样是指分析样本以与应用程序中的循环相同的频率出现。这样做的结果是样本经常出现在循环中的同一个地方,因此它会认为该操作是最常见的操作,并且可能是瓶颈。
打个比方,如果您试图确定一条道路是否出现拥堵,并且您每 24 小时对其进行一次采样。该样本很可能与流量变化保持一致;如果是早上 8 点或下午 5 点,则恰逢高峰时间,并得出道路非常繁忙的结论;如果是凌晨 3 点,它会得出几乎没有交通的结论。
为了采样准确,需要避免这种情况。理想情况下,样本应该比应用程序中的任何循环更频繁,或者以随机间隔出现,以便它在任何特定操作中出现的机会与操作所花费的时间成正比。但这通常是不可行的,因此次优的做法是使用与程序周期的可能频率不一致的采样率。如果程序中有足够的循环,这应该确保样本发生在从每个循环开始的许多不同偏移处。
为了将此与上述类比联系起来,每 23 小时或每天随机抽样一次将导致样本最终遇到一天中的所有时间;每 23 天的样本周期将包括一天中的所有时间。这会生成更完整的流量级别图。每小时进行一次采样将在短短几周内提供完整的图片。
我不确定为什么奇数频率可能会确保这一点。好像是基于程序运算存在自然频率的假设,而且这些都是偶数
我在几篇关于分析应用程序的帖子中看到过这个术语,但我不明白它的实际含义以及它如何影响分析结果。
我看过here for dtrace:
The rate is also increased to 199 Hertz, as capturing kernel stacks is much less expensive than user-level stacks. The odd numbered rates, 99 and 199, are used to avoid sampling in lockstep with other activity and producing misleading results.
-F 99: sample at 99 Hertz (samples per second). I'll sometimes sample faster than this (up to 999 Hertz), but that also costs overhead. 99 Hertz should be negligible. Also, the value '99' and not '100' is to avoid lockstep sampling, which can produce skewed results.
据我所知,所有分析器都应避免锁步采样,因为结果可能是 "skewed" 和 "misleading",但我不明白为什么。我想这个问题适用于所有分析器,但我对 linux.
上的性能感兴趣锁步采样是指分析样本以与应用程序中的循环相同的频率出现。这样做的结果是样本经常出现在循环中的同一个地方,因此它会认为该操作是最常见的操作,并且可能是瓶颈。
打个比方,如果您试图确定一条道路是否出现拥堵,并且您每 24 小时对其进行一次采样。该样本很可能与流量变化保持一致;如果是早上 8 点或下午 5 点,则恰逢高峰时间,并得出道路非常繁忙的结论;如果是凌晨 3 点,它会得出几乎没有交通的结论。
为了采样准确,需要避免这种情况。理想情况下,样本应该比应用程序中的任何循环更频繁,或者以随机间隔出现,以便它在任何特定操作中出现的机会与操作所花费的时间成正比。但这通常是不可行的,因此次优的做法是使用与程序周期的可能频率不一致的采样率。如果程序中有足够的循环,这应该确保样本发生在从每个循环开始的许多不同偏移处。
为了将此与上述类比联系起来,每 23 小时或每天随机抽样一次将导致样本最终遇到一天中的所有时间;每 23 天的样本周期将包括一天中的所有时间。这会生成更完整的流量级别图。每小时进行一次采样将在短短几周内提供完整的图片。
我不确定为什么奇数频率可能会确保这一点。好像是基于程序运算存在自然频率的假设,而且这些都是偶数