该图显示了软件一个刻度的执行时间(以纳秒为单位)。 每次都运行完全相同的刻度(一个数据点是一个刻度)。
在valgrind的模拟环境中进行测试时,每个tick之间没有差异,而且我没有clock_gettime
可能做的其他系统调用。
我想了解什么会导致蜱似乎运行的两个“速度”。我禁用了英特尔CPU睡眠状态,这有很大帮助(在此之前我有4条这样的线),以及可能是异常点的原因。使用的调度程序是linux的FIFO调度程序。
一个有趣的观察结果是,滴答时间在9000和6700 ns这两个值之间交替变化;这里有一些数据点:
9022
6605
9170
6756
9126
6594
9102
6744
9016
6643
8950
6638
9047
6662
编辑: 只是在我的线程循环中执行此操作:
auto t0 = std::chrono::high_resolution_clock::now();
auto t1 = std::chrono::high_resolution_clock::now();
measure(std::chrono::duration_cast<std::chrono::nanoseconds>(t1 - t0).count()));
足以让我看到交替效果,但在100到150 ns之间。