Жизнь по таймеру
Собираюсь писать похожий продукт под никсы( конкретно, freebsd 4/linux 2.4-6 ) и в связи с этим хотелось бы узнать следующее:
1. Если в freebsd/linux таймеры, способные реально, а не теоретически поддерживать частоту 50 Гц(то есть тикать каждые 20 миллисекунд)?
2. Какие средства замера времени исполнения кусков кода присутствуют в freebsd/linux?
Вот уже второй год пишу прогу под NT(тестирование проходит на win2k+sp4), которая должна работать в цикле с частотой 50 Гц. Используется таймер, создаваемый фукцией CreateWaitableTimer. По оценкам времени выполнения( функции QueryPerfomanceCounter) таймер срабатывает каждые 30-35 мс вместо заданных 20 =(.
Собираюсь писать похожий продукт под никсы( конкретно, freebsd 4/linux 2.4-6 ) и в связи с этим хотелось бы узнать следующее:
1. Если в freebsd/linux таймеры, способные реально, а не теоретически поддерживать частоту 50 Гц(то есть тикать каждые 20 миллисекунд)?
2. Какие средства замера времени исполнения кусков кода присутствуют в freebsd/linux?
1. во FreeBSD/Linux таймеры тикают каждые 10 мс. теоретически. практически вроде как тоже :)
2. по поводу средств - см. в сторону
#include <sys/time.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
1. во FreeBSD/Linux таймеры тикают каждые 10 мс. теоретически. практически вроде как тоже :)
2. по поводу средств - см. в сторону
Вроде в линуксах и БСД время тоже плавает. У нас в лаборатории посему часть установок перевели на QNX, которая есть RealTime indeed :)
Вроде в линуксах и БСД время тоже плавает. У нас в лаборатории посему часть установок перевели на QNX, которая есть RealTime indeed :)
QNX на х86? хм...
Вроде в линуксах и БСД время тоже плавает. У нас в лаборатории посему часть установок перевели на QNX, которая есть RealTime indeed :)
А. QNX конечно da dest...Однако он очень платный, если не экспериментировать с нейтрино.
Б. По поводу "линуксов и БСД", не в курсе какие частоты (интервалы) они не держали? Мне достаточно чтобы стабильно отрабатывались миллисекунды.
В. Пошарил по магазинам. Что скажите начет книжки Unix/Linux: теория и практика программирования
(Understanding Unix/Linux Programming)
Б. Моли?
Б. По поводу "линуксов и БСД", не в курсе какие частоты (интервалы) они не держали? Мне достаточно чтобы стабильно отрабатывались миллисекунды.
Насколько я помню, период таймера там плавал в районе 5мс. Т.е. я имею в виду интервал, через который передается управление тактируемому процессу. Минимальный интервал, который удавалось получить ~ 20мс. Все это было под Красной Шапкой 6.какой-то.
Можно поэкспериментировать: усыпить процесс на 20мс и померять, сколько он реально будет спать...
Насколько я помню, период таймера там плавал в районе 5мс. Т.е. я имею в виду интервал, через который передается управление тактируемому процессу. Минимальный интервал, который удавалось получить ~ 20мс. Все это было под Красной Шапкой 6.какой-то.
Можно поэкспериментировать: усыпить процесс на 20мс и померять, сколько он реально будет спать...
Это радостная новость (по поводу ~20мс) :)
А эксперименты начнутся где-то недельки через две, три.
Я так "докапываюсь" потому что горький опыт с виндами постоянно напоминает мне о том, что лучше пару раз переспросить, чем пару лет рыть рыть и прийти к выводу, что на самом деле нифига и не работает так, как это было заявлено в документэйшен и в примерах к ней( это я по поводу таймера ядра виндов).
Почитал об утилите trace. Пишут, что она, в том числе, указывает время системного вызова.Кто нить знает в чем измеряется (мс,мкс) и какова точность таких замеров?
Это радостная новость (по поводу ~20мс) :)
Не сочтите за рекламу. Тут можно прочитать много интересного про проблемы реального времени и даже задать вопросы. Есть люди, которые в этом хорошо разбираются.