Я столкнулся с тем, что в Ubuntu-14.04 в программе на Qt неточно выдерживается timeout для таймера типа QBasicTimer. Программа специально проверочная, ничего не делает, только запускает таймер. Один с периодом 40ms вызывает один слот, другой с периодом 4ms запускается по его срабатыванию и вызывает другой слот 8 раз. При этом время между вызовами 1-го слота колеблется в пределах 40600 - 40618 микросекунд, а время между вызовами 2-го слота - 4062/4063 микросекунды. При этом не бывает сбоев в вызове 1-го слота, т.е. на 10000 раз нет ни одного случая, чтобы время было грубо неправильным.
Получается, что на в 10 раз больший timeout и добавка в 10 раз больше.
В Astra-Linux, основанной на Debian Wheezy, оба timeout'а выдерживаются с точностью 1 микросекунда - 40000 и 4000, но на 10000 раз бывает несколько грубо неправильных вызова 1-го слота. Время получал с помощью gettimeofday(). В обоих системах ядро скомпилированное, HZ=1000.
Запустил эту программу в Ubuntu-14.04 на ноутбуке с Intel Core i7, там ещё хуже: вместо 4ms - 4150-4183 микросекунд, вместо 40ms - 39688-40716 микросекунд.
В чём может быть причина такой отработки интервалов в Ubuntu? Hаверное, в Ubuntu есть какой-то порок.
Пётр. --- ifmail v.2.15dev5.4 * Origin: Home (2:5020/400)