gpt4 book ai didi

performance - 性能测量的建模分布

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:19:02 32 4
gpt4 key购买 nike

您将如何对重复的现实生活中的性能测量的分布进行数学建模 - “现实生活”意味着您不仅要遍历有问题的代码,而且它只是在典型用户场景中运行的大型应用程序中的一小段?

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

我的目标是对合理反射(reflect)这一点的聚合值建模,并且可以从聚合值计算(例如对于高斯,从 N、值和和平方和计算 mu 和 sigma) .换句话说,重复次数是无限的,但内存和计算要求应该最小化。

正态高斯分布无法适本地对长尾进行建模,即使极小比例的异常值也会使平均值产生强烈偏差。

我正在寻找想法,尤其是如果之前已经尝试过/分析过的话。我已经检查了各种分布模型,我认为我可以解决一些问题,但我的统计数据是生锈的,我可能会得到一个夸大的解决方案。哦,一个完整的收缩包装解决方案也可以;)

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

据此推断,另一种方法是“ float 概率密度计算”,它仅使用有限的缓冲区并自动调整到范围(由于尾部很长,箱子可能不会均匀分布) - 还没有找到任何东西,但是根据一些关于分布的假设,原则上应该是可能的。


为什么(因为它被问到)-

对于复杂的流程,我们需要做出诸如“只有 0.1% 的运行超过 3 秒的限制,平均处理时间为 2.8 秒”之类的保证。一段孤立的代码的性能可能与涉及不同级别的磁盘和网络访问、后台服务、一天内发生的计划事件等的正常运行时环境有很大不同。

这可以通过累积所有 数据轻松解决。然而,要在生产中积累这些数据,需要限制产生的数据。对于孤立的代码片段的分析,高斯偏差加上首次运行惩罚是可以的。对于上面找到的发行版,这不再适用。

[edit] 我已经得到了非常好的答案(最后 - 也许 - 有时间来解决这个问题)。我开始悬赏以寻找更多的意见/想法。

最佳答案

通常当您有一个只能为正的随机值时,对数正态分布是对其建模的好方法。也就是说,您获取每次测量的日志,并假设它服从正态分布。

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

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

顺便说一句,在药理学建模中,对数正态分布无处不在,建模诸如血容量、吸收和消除率、体重等。

添加:如果您想要所谓的 float 分布,则称为经验分布或非参数分布。要对此建模,通常将测量值保存在排序数组中。然后很容易挑出百分位数。例如,中位数是“中间数”。如果要保存的测量值太多,可以在获得足够的测量值以获得大致形状后进行某种分箱。

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

关于performance - 性能测量的建模分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1867426/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com