绩效评估期间的异常值
Posted
技术标签:
【中文标题】绩效评估期间的异常值【英文标题】:Outliers during Performance Evaluation 【发布时间】:2010-01-24 11:52:11 【问题描述】:我正在尝试使用 Intel 的 RDTSC 进行一些性能测量,结果相当 奇怪的是我在不同的测试运行中得到的变化。在大多数情况下,我的 C 基准测试 需要 3000000 个 Mio 周期,但是,在某些情况下,完全相同的执行可能需要 500万,几乎翻了一番。我试图让没有密集的工作负载并行运行 以便我获得良好的性能估计。任何人都知道这个巨大的时机 变异可以从何而来?我知道可能会发生中断和事情,但我没想到 时间变化如此之大!
PS.:我在奔腾处理器上运行它,上面运行着 Linux。
感谢您的反馈, 约翰
【问题讨论】:
【参考方案1】:我认为答案在:
我试过没有紧张的工作量 并行运行
在现代操作系统中,您对此没有足够的控制权。
【讨论】:
【参考方案2】:根据this Wikipedia article,RDTSC(时间戳计数器)不能可靠地用于多核系统的基准测试。无法保证所有内核在时间戳寄存器中具有相同的值。
在 Linux 上,最好使用 POSIX clock_gettime
函数。
【讨论】:
【参考方案3】:您必须考虑大多数现代处理器的缓存。在您测量长时间运行时间的情况下,也许另一个进程会驱逐您程序的缓存内容。 正如 Henk 指出的那样,现代操作系统中发生了很多你无法控制的事情。
【讨论】:
以上是关于绩效评估期间的异常值的主要内容,如果未能解决你的问题,请参考以下文章
R语言manova函数多元方差分析(MANOVA)单因素多元方差分析的两个假设是多元正态性和方差-协方差矩阵的齐性QQ图评估多元正态性mvoutlier包中的aq.plot函数检验多变量异常值