From: Michal Schmidt <xschmi00@stud.feec.vutbr.cz>
To: GolovaSteek <golovasteek@gmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: nanosleep() accuracy
Date: Fri, 17 Aug 2007 13:08:16 +0200 [thread overview]
Message-ID: <46C581A0.7090000@stud.feec.vutbr.cz> (raw)
In-Reply-To: <f40fb4250708170044q9a259c3wb50186880d6b7f51@mail.gmail.com>
GolovaSteek wrote:
> 2007/8/17, Michal Schmidt <xschmi00@stud.feec.vutbr.cz>:
>
>> GolovaSteek skrev:
>>
>>> Hello!
>>> I need use sleep with accurat timing.
>>> I use 2.6.21 with rt-prempt patch.
>>> with enabled rt_preempt, dyn_ticks, and local_apic
>>> But
>>>
>>> req.tv_nsec = 300000;
>>> req.tv_sec = 0;
>>> nanosleep(&req,NULL)
>>>
>>> make pause around 310-330 microseconds.
>>>
>> How do you measure this?
>> If you want to have something done every 300 microseconds, you must not
>> sleep for 300 microseconds in each iteration, because you'd accumulate
>> errors. Use a periodic timer or use the current time to compute how long
>> to sleep in each iteration. Take a look how cyclictest does it.
>>
>
> no. I just want my programm go to sleep sometimes and wake up in correct time.
>
What does your program do that it has such a strict requirement on the
exact length of sleeping?
>>> I tried to understend how work nanosleep(), but it not depends from
>>> jiffies and from smp_apic_timer_interrupt.
>>>
>>> When can accuracy be lost?
>>> And how are process waked up?
>>>
>>>
>>> GolovaSteek
>>>
>> Don't forget the process will always have non-zero wakeup latency. It
>> takes some time to process an interrupt, wakeup the process and schedule
>> it to run on the CPU. 10-30 microseconds is not unreasonable.
>>
>
> But 20000 operations can be done in 10 microseconds?
> and why is there that inconstancy? Why sametimes 10 and sometimes 30?
> In which points of implementation it happens?
>
> GolovaSteek
>
If a jitter of 20 microseconds is unacceptable for your application,
don't use PC hardware. Consider using a microcontroller.
Michal
prev parent reply other threads:[~2007-08-17 11:08 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-16 22:52 nanosleep() accuracy GolovaSteek
2007-08-17 7:00 ` Michal Schmidt
2007-08-17 7:44 ` GolovaSteek
2007-08-17 7:54 ` Jan Engelhardt
2007-08-17 11:08 ` Michal Schmidt [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46C581A0.7090000@stud.feec.vutbr.cz \
--to=xschmi00@stud.feec.vutbr.cz \
--cc=golovasteek@gmail.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox