public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Sundar Narayanaswamy <sundar007@yahoo.com>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: Latency with Real-Time Preemption with 2.6.12
Date: Wed, 17 Aug 2005 23:12:46 -0400	[thread overview]
Message-ID: <1124334766.5186.35.camel@localhost.localdomain> (raw)
In-Reply-To: <20050818023853.48406.qmail@web54406.mail.yahoo.com>

On Wed, 2005-08-17 at 19:38 -0700, Sundar Narayanaswamy wrote:
> Hi,
> I am trying to experiment using 2.6.12 kernel with the realtime-preempt 
> V0.7.51-38 patch to determine the kernel preemption latencies with the 
> CONFIG_PREEMPT_RT mode. The test program I wrote does the following on
> a thread with highest priority (99) and SCHED_FIFO policy to simulate
> a real time thread.
> 
> t1 = gettimeofday
> nanosleep(for 3 ms)
> t2 = gettimeofday
> 
> I was expecting to see the difference t2-t1 to be close to 3 ms. However, 
> the smallest difference I see is 4 milliseconds under no system load, 
> and the difference is as high as 25 milliseconds under moderate to 
> heavy system load (mostly performing disk I/O).

That version of Ingo's patch does not implement High-Resolution Timers.
Thomas worked on merging this into the latest RT patch.  Without
high-res timers, the best you may ever get is 4ms. This is because
nanosleep is to guarantee _at_least_ 3 ms.  So you have the following
situation:

0               1               2                3               4 (ms)
+---------------+---------------+----------------+---------------+--->
           ^                                        ^
           |                                        |
         Start here 0+3 = 3                      here we have the response

If we look at this in smaller units than ms, we started on 0.8ms and
responded at 3.2ms where we have 3.2 - 0.8 = 2.4 which is less than 3ms.
So since Ingo's patch doesn't increase the resolution of the timers from
a jiffy (which is currently 1ms) Linux is forced to add one more than
you need.

> 
> Based on the articles and the mails I read on this list, I understand that 
> worst case latencies of 1 ms (or less) should be possible using the RT 
> Preemption patch, but I am unable to get anything less than 4 millseconds 
> even with sleep times smaller than 3 ms. I am running the tests on a SBC 
> with a 1.4G Pentium M, 512M RAM, 1GB compact flash (using IDE). 
> 
> I believe I have the high resolution timer working correctly, because if I 
> comment out the sleep line above t2-t1 is consistenly 0 or 1 microsecond.

I don't think you have the high res timer working, since there is no
high res timer in that kernel.

> 
> Following earlier discussions (in July) in this list, I tried to set kernel 
> configuration parameters like CONFIG_LATENCY_TRACE to get tracing/debug 
> information, but I didn't find these parameters in my .config file.
> 
> I appreciate your suggestions/insights into the situation and steps that I 
> should try to get more debug/tracing information that might help to understand 
> the cause of high latency.

It's not a high latency.  It's doing exactly as it is suppose to, since
the nanosleep doesn't have high-res support (in that kernel).  If you
really want to measure latency, you need to add a device or something
and see what the response time of an interrupt going off to the time a
thread is woken to respond to it.  Now with Ingo's that is really fast.

-- Steve



  reply	other threads:[~2005-08-18  3:13 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-18  2:38 Latency with Real-Time Preemption with 2.6.12 Sundar Narayanaswamy
2005-08-18  3:12 ` Steven Rostedt [this message]
2005-08-18 22:29   ` George Anzinger
2005-08-19  0:23     ` Sundar Narayanaswamy
2005-08-19  1:22       ` Steven Rostedt

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=1124334766.5186.35.camel@localhost.localdomain \
    --to=rostedt@goodmis.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=sundar007@yahoo.com \
    --cc=tglx@linutronix.de \
    /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