建模性能测量的分布

时间:2009-12-08 14:45:24

标签: performance algorithm math statistics

您将如何在数学上模拟重复的现实生活性能测量的分布 - “真实生活”意味着您不仅仅是循环使用相关代码,而且它只是在典型用户场景中运行的大型应用程序中的一小段内容?

我的经验表明,您通常在平均执行时间周围有一个峰值,可以使用高斯分布充分建模。此外,还有一个包含异常值的“长尾” - 通常是平均时间的倍数。 (考虑到导致首次执行惩罚的因素,这种行为是可以理解的)。

我的目标是对合理反映这一点的聚合值进行建模,并且可以从聚合值计算(例如高斯值,从N计算mu和sigma,值的总和和平方和) 。换句话说,重复次数是无限的,但应尽量减少存储器和计算要求。

正常的高斯分布不能适当地对长尾进行建模,并且即使只有极小百分比的异常值,其平均偏差也很大。

我正在寻找想法,特别是如果之前已经尝试/分析过。我已经检查了各种发行版模型,我想我可以解决一些问题,但我的统计数据是生锈的,我可能最终得到一个夸张的解决方案。哦,一个完整的收缩包装解决方案也可以;)

其他方面/想法:有时你得到“两个驼峰”的分布,这在我的场景中是可以接受的,只有一个mu / sigma覆盖两者,但理想情况下会单独识别。

推断这一点,另一种方法是“浮动概率密度计算”,它只使用有限的缓冲区并自动调整到该范围(由于长尾,箱可能没有均匀间隔) - 没有找到任何东西,但是对于分布的一些假设原则上应该是可能的。


为什么(因为有问题) -

对于复杂的过程,我们需要做出保证,例如“只有0.1%的运行超过3秒的限制,平均处理时间为2.8秒”。隔离代码的性能可能与正常的运行时环境有很大不同,包括不同级别的磁盘和网络访问,后台服务,一天内发生的预定事件等。

这可以通过累积所有数据来解决。但是,为了在生产中积累这些数据,需要限制所产生的数据。对于孤立的代码片段的分析,高斯偏差加上第一次运行罚分是可以的。对于上面找到的分布,这不再起作用了。

[edit] 我已经得到了非常好的答案(最后 - 也许 - 有时间可以解决这个问题)。我正在寻找更多的投入/想法。

6 个答案:

答案 0 :(得分:6)

通常,如果您的随机值只能为正值,则对数正态分布是对其进行建模的好方法。也就是说,您记录每个测量的日志,并假设它是正态分布的。

如果你愿意,你可以认为它有多个驼峰,即是具有不同均值的两个法线的总和。估计参数有点棘手,因为对于每次测量,您可能必须估计其属于每个驼峰的概率。这可能比你想要打扰更多。

对数正态分布非常方便且表现良好。例如,你没有处理它的平均值,你处理它的几何平均值,这与它的中位数相同。

BTW,在药物建模中,对数正态分布无处不在,可以对血容量,吸收和消除率,体重等进行建模。

增加:如果你想要你称之为浮动分布的东西,那就称为经验分布或非分布分布。要对其进行建模,通常可以将测量值保存在已排序的数组中。然后很容易挑出百分位数。例如,中位数是“中间数”。如果您有太多的测量值要保存,那么在有足够的测量值来获得一般形状后,您可以进行某种分类。

ADDED:有一种简单的方法可以判断分布是否正常(或对数正常)。获取测量的日志并将它们放入已排序的数组中。然后生成QQ图(分位数 - 分位数)。要做到这一点,请生成与样本一样多的正常随机数,然后对它们进行排序。然后只绘制点,其中X是正态分布点,Y是对数样本点。结果应该是一条直线。 (生成正常随机数的一种非常简单的方法是将+/- 0.5范围内的12个均匀随机数加在一起。)

答案 1 :(得分:3)

您描述的问题称为“分布拟合”,与性能测量无关,即这是适合分布到任何收集/测量数据样本的一般问题。

标准流程是这样的:

  1. 猜猜最佳分布。
  2. 运行假设检验以检查其描述收集数据的程度。
  3. 如果不够好,重复1-3次。
  4. 您可以找到有趣的文章,介绍如何使用开源R软件系统here来完成此操作。我认为特别有用的可能是函数fitdistr

答案 2 :(得分:2)

除已经给出的答案外,请考虑Empirical Distributions。我在使用经验分布进行多个分布式系统的性能分析方面拥有成功经验。这个想法很简单。您需要构建性能测量的直方图。应以给定的精度离散测量值。当你有直方图时,你可以做几件有用的事情:

  • 计算任何给定值的概率(仅受准确性约束);
  • 为性能测量构建PDF和CDF函数;
  • 根据分布生成响应时间序列。这个对于性能建模非常有用。

答案 3 :(得分:1)

尝试使用whit gamma发布http://en.wikipedia.org/wiki/Gamma_distribution

来自维基百科

伽玛分布通常是等待时间的概率模型;例如,在生命测试中,直到死亡的等待时间是一个随机变量,经常用伽玛分布建模。

答案 4 :(得分:0)

performance modelling的随机到达时间标准是指数分布或泊松分布(这只是多个指数分布加在一起的分布)。

答案 5 :(得分:0)

不完全回答您的问题,但仍然相关:Mor Harchol-Balter对提交给调度程序The effect of heavy-tailed job size distributions on computer systems design (1999)的作业大小进行了非常好的分析。她发现提交给她的分布式任务分配系统的工作规模采用了幂律分配,这意味着她在构建任务分配系统时假设的某些传统智慧,最重要的是工作应该很好地加载平衡,对工作提交者产生了可怕的后果。她在这个问题上做了很好的后续工作。

更广泛的一点是,你需要提出以下问题:

  1. 如果对绩效分配有合理假设的假设,例如他们采取正常分配的假设,会发生什么?
  2. 我正在查看的数据集是否真正代表了我正在尝试解决的问题?