过程的好坏对(微)基准测试很重要吗?我的直觉是,开始基准测试nice -20
会产生更精确的结果,因为基准测试发生的上下文切换更少。
另一方面,许多工具或库函数不仅允许检索墙上时间,还允许检索 CPU 时间。此外,基准机器不应同时运行其他资源密集型进程,因此无论如何不会有太多竞争。
作为一种天真的方法,我编写了一个简单的程序来测量 wall-time,希望在使用不同的 niceness 值开始该过程时看到差异:
#include <stdio.h>
#include <stdint.h>
#include <sys/time.h>
int main() {
struct timeval tval_before, tval_after, tval_result;
gettimeofday(&tval_before, NULL);
int i;
for (i = 0; i < 2000000000; i++) {
}
gettimeofday(&tval_after, NULL);
timersub(&tval_after, &tval_before, &tval_result);
printf("Time elapsed: %ld.%06ld\n", (long int)tval_result.tv_sec, (long int)tval_result.tv_usec);
return 0;
}
但是,在测量时,以高或低的 nice 值启动程序并没有一致的差异。所以我的问题是:我的基准是否不行使受好感影响的属性,或者好感与该基准无关?niceness 值是否与基准机器相关?此外:这些perf stats
context-switches
指标是否适合衡量友善的影响?