如何将页面浏览量与内存峰值相关联?

4

我在使用一个应用程序时遇到了一些内存问题,但是很难确定具体是哪里出了问题。我有两组数据:

页面浏览量

  • 请求的页面
  • 请求该页面的时间

内存使用情况

  • 正在使用的内存量
  • 记录此内存使用情况的时间

我想确切地知道哪些页面浏览量与高内存使用率相关。我的猜测是,我将进行某种T检验,以确定哪些页面浏览量与增加的内存使用率相关。然而,我对要选择哪种类型的T检验还有点不确定。请问有人能至少指点我一下方向吗?

4个回答

3

杰森,

你提出了很好的统计问题。考虑将内存使用量作为随机变量。第一步是查看此随机变量的分布。它可能不适合任何已知分布,但不要让这停止我们。一个简单的方法是取最高的内存使用量(前5-10%),并查看那些页面浏览量(或请求时刻)是否与其余页面浏览量有所不同。我认为您需要一些非参数测试,以比较低内存样本的页面浏览比例与高内存样本中页面浏览比例。希望这可以帮助到您。


3
我建议构建一个具有两列的数据集。第一列是分布中最高内存使用时间中每个页面出现的比例,第二列是这些(相同的)页面在内存分布的其余值中出现的比例。
然后,您需要执行配对检验,以检查差异的中位数(高-低)是否小于或等于零(H0),并针对备择假设进行检验,即差异的中位数大于零(H1)。我建议使用非参数检验Wilcoxon Signed Ranks Test,它是一种用于配对样本的Mann-Whitney Test的变体。它还考虑了每对中差异的大小,其他测试忽略了这一点(例如符号检验)。
请记住,绑定(零差异)在推导非参数方法时会出现许多问题,应该避免。处理绑定值的首选方法是向数据添加一点“噪声”来完成测试。也就是说,在修改绑定值之后通过添加足够小的随机变量来完成测试,这不会影响差异的排名。
我希望这个测试的结果和绘制差异分布图将为您提供问题所在的见解。

这是在R语言中实现威尔科克森符号秩检验的过程。


1
谢谢gd - 这是对我的回答的很好的阐述。样本大小非常不同是否重要?高内存计数将只有其他观察结果的10-20%,对吗? - Grembo
这就是为什么我建议使用比例的原因。另外要避免使用零百分比,可以使用继承规则 - 或者用贝叶斯方法通过计算后验概率估计(二项式/贝塔模型)来实现。 - gd047

1
你提出的确实是一个有趣的统计问题,但我可以建议你用一个老式的电子表格来进行图形化处理吗?
为每个页面分配一个唯一的编号,并绘制一个页面编号与内存使用量的散点图。你应该能够看到一堆垂直线和标记。希望罪魁祸首能够显而易见。
如果数据点太多,导致线条变得密集,那么你可以在页面编号上添加一些小的噪声,以扩展线条。如果请求重叠,则可能需要尝试一些技巧,比如将内存除以并发请求的数量,但即使有很多噪声,你的眼睛应该也能够找出罪魁祸首。

1
这里有另一个想法: 如果您能够通过时间戳值将页面浏览量和内存使用情况结合起来,您可以形成如下表格:
页面A | 页面B | 页面C | 页面D | 页面E |....| 内存使用
每个页面列的值可能是一个位于[0,1]之间的数字,表示页面是否被请求,或者是页面数量,具体取决于您的数据。在内存使用列中,您可以拥有相关的内存负载比例或MB计数。这样,内存使用就可以被视为一个因变量,而页面则是解释变量。因此,您可以对这个数据集拟合一个适当的(取决于因变量形式)广义线性模型。这个分析的结果将给您以下见解:
- 哪些页面显著影响内存使用的值 - 每个页面通过其模型系数对负载的贡献程度 - 其他未测量因素在内存负载中发挥重要作用(过度离散化),最坏的情况是所有预测变量可能都不重要。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接