Tôi đang thực hiện các thử nghiệm khác nhau với một hộp Ubuntu chạy hạt nhân 3.5.7. Tôi hâm nóng mã điểm chuẩn của mình lên 10 triệu lần lặp và sau đó tiến hành đến 90 triệu lần lặp. Tuy nhiên, tôi thấy người jitter sau:Có thể loại bỏ jitter ra khỏi máy Linux khi chạy chương trình C++ đơn luồng không?
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** <===
Tôi thấy thời gian xấu trên 0,01% số lần lặp lại của mình. Có thể tạo hạt nhân Linux thực sự theo thời gian thực không? Có cái gì khác xảy ra trong hạt nhân mà tôi không thể kiểm soát?
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.
}