Re[2]: Дискретность задержки usleep() и nanosleep() под Linu
От: Zline  
Дата: 03.07.06 17:41
Оценка:
Еще поправка: на интеловских процах у usleep'a все же получше дела, чем на АМД — точность порядка 1-4мс.. но все же хуже чем у винды на интеле
Re[2]: Дискретность задержки usleep() и nanosleep() под Linu
От: ДимДимыч Украина http://klug.org.ua
Дата: 04.07.06 07:22
Оценка:
Здравствуйте, Zline, Вы писали:

Z>Решил проверить точность функции usleep с помощью такой програмы:


А вот мой результат при CONFIG_HZ=1000 и CONFIG_PREEMPT=y:

  5: -> 6012
 10: -> 10995
 15: -> 15995
 20: -> 20994
 25: -> 26002
 30: -> 30918
 35: -> 36010
 40: -> 40992
 45: -> 45987
 50: -> 50987
 55: -> 55986
 60: -> 60984
 65: -> 65983
 70: -> 70982
 75: -> 75983
 80: -> 81180
 85: -> 86278
 90: -> 90977
 95: -> 95977
100: -> 100977
105: -> 105974
110: -> 110975
115: -> 115971
120: -> 120971
125: -> 125972
130: -> 130969
135: -> 135969
140: -> 140967
145: -> 145966
150: -> 151364


Процессор P4.

Z>зы. и как винде удается достичь точности в 1мс (пусть и только на интеловских процах)?


А какой у винды квант времени?
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[2]: Дискретность задержки usleep() и nanosleep() под Linu
От: Zline  
Дата: 05.07.06 08:02
Оценка:
Z>Всвязи с вышесказанным решил делать некоторую калибровку в софтинах, юзающих эти функции с малыми задержками (< 50ms).

Вышеозначенное легко реализовал с помощью gettimeofday, т.е. если скажем стоит задача выдавать N пакетов в секунду _относительно равномерно_, то это вполне осуществимо. Ну а если _имеенно_ с заданной задержкой между пакетами — хз.
Re[4]: Дискретность задержки usleep() и nanosleep() под Linu
От: Zline  
Дата: 07.07.06 07:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Vladimir Davydov, Вы писали:


А>Если это работает, то точно 17 миллисекунд ты можешь отмерить таким образом: 10 мс -- usleep, а оставшееся время (7 мс) busy wait, своим musleep'ом.


а кто сказал, что usleep(10*1000) всегда и везде спит 10мс? см http://rsdn.ru/Forum/Message.aspx?mid=1986899&amp;only=1
Автор: Zline
Дата: 03.07.06
Re[2]: Дискретность задержки usleep() и nanosleep() под Linu
От: MaximE Великобритания  
Дата: 16.07.06 11:18
Оценка:
Zline wrote:

[]

> VD>Подскажите, пожалуйста, как цивилизованным путем (без 100% загрузки

> CPU на время задержки) можно добиться задержки с меньшей дискретностью ?
>
> Решил проверить точность функции usleep с помощью такой програмы:

Не существует такой вещи, как точность usleep. Гарантируется лишь, что процесс
будет заблокирован не менее указанного времени, максимальное время же,
проведенное в usleep, не ограничивается.

Сколько процесс будет заблокирован в этом вызове зависит от других процессов. К
примеру, если в момент, когда твой процесс был заблокирован, user запустил
SCHED_FIFO процесс, твой процесс может разблокироваться только когда SCHED_FIFO
процесс завершится.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 2.0
Re[3]: Дискретность задержки usleep() и nanosleep() под Linu
От: Zline  
Дата: 16.07.06 12:12
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Zline wrote:


ME>[]


>> VD>Подскажите, пожалуйста, как цивилизованным путем (без 100% загрузки

>> CPU на время задержки) можно добиться задержки с меньшей дискретностью ?
>>
>> Решил проверить точность функции usleep с помощью такой програмы:

ME>Не существует такой вещи, как точность usleep. Гарантируется лишь, что процесс

ME>будет заблокирован не менее указанного времени, максимальное время же,
ME>проведенное в usleep, не ограничивается.

ME>Сколько процесс будет заблокирован в этом вызове зависит от других процессов. К

ME>примеру, если в момент, когда твой процесс был заблокирован, user запустил
ME>SCHED_FIFO процесс, твой процесс может разблокироваться только когда SCHED_FIFO
ME>процесс завершится.

ME>--

ME>Maxim Yegorushkin

Под "точностью" я понимал разницу между переданным функции значением и времени, проведенным "в спячке". Оно понятно, что эта величина зависит от вышеперечисленных факторов, но нам то от этого не легче, если скажем надо выждать ровно 10мс
Re[4]: Дискретность задержки usleep() и nanosleep() под Linu
От: MaximE Великобритания  
Дата: 16.07.06 12:23
Оценка:
Zline wrote:

[]

> Под "точностью" я понимал разницу между переданным функции значением и

> времени, проведенным "в спячке". Оно понятно, что эта величина зависит
> от вышеперечисленных факторов, но нам то от этого не легче, если скажем
> надо выждать ровно 10мс

Можно начать отсюда http://lwn.net/images/pdf/LDD3/ch07.pdf

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 2.0
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.