Я выполняю различные эксперименты с ядром Ubuntu, работающим под управлением ядра 3.5.7. I разогрев мой тестовый код до 10 миллионов итераций, а затем перейдите к времени 90 миллионов итераций. Тем не менее я вижу следующий джиттер:Возможно ли устранить дрожание от машины Linux при запуске простой однопоточной программы на C++?
Average: 242 nanos | Min Time: 230 nanos | Max Time: 4717 nanos
0.75 = avg: 240, max: 246
0.9 = avg: 241, max: 247
0.99 = avg: 242, max: 250
0.999 = avg: 242, max: 251
0.9999 = avg: 242, max: 517
0.99999 = avg: 242, max: **2109** <===
0.999999 = avg: 242, max: **3724** <===
0.9999999 = avg: 242, max: **4424** <===
Я вижу плохие времена на 0.01% моих итераций. Можно ли сделать ядро Linux действительно в режиме реального времени? Есть ли что-то еще в ядре, которое я не могу контролировать?
for(int i = 0; i < iterations; i++) {
long start = get_nano_ts(&ts);
for(int j = 0; j < load; j++) {
long p = (i % 8) * (i % 16);
if (i % 2 == 0) {
x += p;
} else {
x -= p;
}
}
long end = get_nano_ts(&ts);
int res = end - start;
// store the results, calculate the percentiles, averages, min, max, etc.
}