On 11/12/14 23:50, Alexey Korop wrote: > Привет, Peter! > > 11.11.2014 в 23:07:19 Peter Irich написал к All: > > PI> В Astra-Linux, основанной на Debian Wheezy, оба timeout'а > PI> выдерживаются с точностью 1 микросекунда - 40000 и 4000, но на > Это в среднем? Это +/- 1мкс, т.е. 3999-4001.
> PI> 10000 раз бывает несколько грубо неправильных вызова 1-го слота. > Грубо - это на сколько? Hа 30-40% скорее, один раз следующий вызов был вообще моментально за предидущим.
> PI> Время получал с помощью gettimeofday(). В обоих системах ядро > PI> скомпилированное, HZ=1000. > Вообще-то, если надо ловить микросекунды, то это можно сделать только с > RT-шедулером и RT-приоритетом, типа setschedparam(...SCHED_FIFO...). Ядро при > этом должно быть с RT-патчем, и крайне нежелательно тулить всякую > проприетарщину вроде драйвера nVidia. Ещё можно поиграть с clocksource. А вот > HZ=1000 примерно пофиг. Hо всё равно на конторской машине точность тика даже в > 100 мкс нельзя гарантировать. > Если отличия редко, то это в моём случае это неважно, но важно, чтобы интервалы выдерживались правильно, а не 4062 вместо 4000. Т.е. почему в Debian правильно, а в Ubuntu нет? А HZ=1000 я устанавливал и более 10 лет назад, тоже для программы, отсчитывающей интервалы. Hасколько я помню, там это реально требовалось.
> PI> Запустил эту программу в Ubuntu-14.04 на ноутбуке с Intel Core i7, там > PI> ещё хуже: вместо 4ms - 4150-4183 микросекунд, вместо 40ms - > PI> 39688-40716 микросекунд. > > PI> В чём может быть причина такой отработки интервалов в Ubuntu? > PI> Hаверное, в Ubuntu есть какой-то порок. > По-моему, ты пытаешься молоток использовать вместо микроскопа. Где-то > повезло, где-то нет. Разве кто-то обещал, что QBasicTimer будет иметь какую-то > точность? > Он же в конечном счёте использует таймер от ОС. Гранулированность зависит от системы. Ещё одно различие: в Debian Qt 4.8.4 скомпилированная, а в Ubuntu Qt 5 дистрибутивная. Я, конечно, не выяснял, какие в обоих случаях используются таймеры от системы.
Пётр.
--- ifmail v.2.15dev5.4 * Origin: Home (2:5020/400)