Еще поправка: на интеловских процах у usleep'a все же получше дела, чем на АМД — точность порядка 1-4мс.. но все же хуже чем у винды на интеле
Здравствуйте, 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мс (пусть и только на интеловских процах)?
А какой у винды квант времени?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Vladimir Davydov, Вы писали:
А>Если это работает, то точно 17 миллисекунд ты можешь отмерить таким образом: 10 мс -- usleep, а оставшееся время (7 мс) busy wait, своим musleep'ом.
а кто сказал, что usleep(10*1000) всегда и везде спит 10мс?

см
http://rsdn.ru/Forum/Message.aspx?mid=1986899&only=1Автор: Zline
Дата: 03.07.06
Zline wrote:
[]
> VD>Подскажите, пожалуйста, как цивилизованным путем (без 100% загрузки
> CPU на время задержки) можно добиться задержки с меньшей дискретностью ?
>
> Решил проверить точность функции usleep с помощью такой програмы:
Не существует такой вещи, как точность usleep. Гарантируется лишь, что процесс
будет заблокирован не менее указанного времени, максимальное время же,
проведенное в usleep, не ограничивается.
Сколько процесс будет заблокирован в этом вызове зависит от других процессов. К
примеру, если в момент, когда твой процесс был заблокирован, user запустил
SCHED_FIFO процесс, твой процесс может разблокироваться только когда SCHED_FIFO
процесс завершится.
--
Maxim YegorushkinPosted via RSDN NNTP Server 2.0
Здравствуйте, 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мс
Zline wrote:
[]
> Под "точностью" я понимал разницу между переданным функции значением и
> времени, проведенным "в спячке". Оно понятно, что эта величина зависит
> от вышеперечисленных факторов, но нам то от этого не легче, если скажем
> надо выждать ровно 10мс
Можно начать отсюда
http://lwn.net/images/pdf/LDD3/ch07.pdf
--
Maxim YegorushkinPosted via RSDN NNTP Server 2.0