代码之家  ›  专栏  ›  技术社区  ›  Jason Baker

如何将页面视图与内存峰值关联起来?

  •  4
  • Jason Baker  · 技术社区  · 14 年前

    我的应用程序有一些内存问题,但是很难确切地知道它在哪里。我有两组数据:

    页面浏览量

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

    内存使用

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

    我想知道哪些页面视图与高内存使用率相关。我的猜测是,我将进行某种类型的t测试,以确定哪些页面视图与增加的内存使用率相关。但是,我有点不确定要用什么样的t检验。至少有人能指出我的正确方向吗?

    4 回复  |  直到 14 年前
        1
  •  3
  •   Yorgos    14 年前

    我建议用两列构造一个数据集。第一个是在分布的最高内存使用时间内每个页面出现的比例,第二个是那些(相同)页面占内存分布其余值的比例。

    然后,您必须执行配对测试,以对照差异中位数大于零(h1)的替代假设,检查差异中位数(高休息)是否小于或等于零(h0)。我建议使用非参数测试 Wilcoxon Signed Ranks Test 它是 Mann - Whitney Test 配对样本。它还考虑了每对测试中差异的大小,其他测试忽略了这一点(例如符号测试)。

    请记住,关系(零差)在非参数方法的推导中存在许多问题,应该避免。处理关系的最佳方法是在数据中添加一点“噪声”。也就是说,在修改绑定值之后,通过添加一个足够小的随机变量来完成测试,该变量不会影响差异的排序。

    我希望测试的结果和绘制差异分布可以让您了解问题所在。

    这是 Wilcoxon Signed Ranks Test 在里面 R language

        2
  •  3
  •   Grembo    14 年前

    杰森,

    你会问一些好的统计问题。想想作为随机变量使用的内存量。第一步是看看这个R.V.的分布。它可能不适合任何已知的分布,但不要让这阻止我们。一种简单的方法是采用最高的内存使用率(前5-10%),并查看这些页面视图(或请求它们的时间)是否与其余页面视图有任何不同。我认为您需要一些非参数测试,将低内存示例的页面视图比例与高内存示例中的页面视图比例进行比较。希望这有帮助。

        3
  •  1
  •   Theran    14 年前

    您提出的问题当然是一个有趣的统计问题,但是我可以建议用一个好的ol'电子表格的图形化方法来代替吗?

    为每个页面分配一个唯一的数字,并绘制页面与内存使用的散点图。你应该得到一堆垂直的标记线。希望罪魁祸首是显而易见的。

    如果有太多的数据点使行变为实线,那么可以在页码上添加少量噪波以加宽行。如果请求是重叠的,那么您可能需要尝试一些技巧,比如将内存除以并发请求的数量,但是您的眼睛应该能够识别出违规者,即使有很大的噪声。

        4
  •  1
  •   Yorgos    14 年前

    另一个想法是: 如果您能够通过时间戳值连接页面视图和内存使用,那么您可以形成这样的表。

    A页B页C页D页E页内存使用

    每个页面列的值可能是一个位[0,1],表示页面是否被请求,或者页面计数,具体取决于您的数据。在内存使用列中,您可以有相关的内存负载比例,或者以MB为单位计数。通过这种方式,记忆的使用可以被认为是一个因变量,而页面则是解释变量。因此,您可以将一个适当的(取决于因变量的形式)广义线性模型适合于这个数据集。此分析的结果将使您了解以下内容

    -哪些页面会显著影响内存使用的价值

    -每一页对负载的贡献程度(通过模型中的系数)

    -其他因素(未测量)在记忆负荷(过度分散)中起重要作用的可能性,最坏的情况是所有的预测变量可能变得不重要。