All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philippe Gerum <rpm@xenomai.org>
To: Thomas Lockhart <Thomas.Lockhart@domain.hid>
Cc: Petr Cervenka <grugh@domain.hid>,
	xenomai-help <xenomai@xenomai.org>,
	"Lockhart, Thomas G" <thomas.g.lockhart@domain.hid>
Subject: Re: [Xenomai-help] rtdm_event_timedwait returns -EINTR
Date: Fri, 01 May 2009 11:34:20 +0200	[thread overview]
Message-ID: <1241170460.26544.205.camel@domain.hid> (raw)
In-Reply-To: <49FA28F7.3060405@domain.hid>

On Thu, 2009-04-30 at 15:40 -0700, Thomas Lockhart wrote:
> > Xenomai always tells the kernel that blocking (Xenomai) syscalls
> > _should_ be restarted when interrupted by a Linux signal (i.e.
> > -ERESTARTSYS is passed down to the kernel by the Xenomai core in that
> > case), and the kernel will actually restart that (Xenomai) syscall if no
> > handler was installed for such signal, or if SA_RESTART is set in the
> > sigaction() flags for the signal.
> 
> Thanks for the clarification. I was hoping my reply would expose my lack 
> of understanding :)
> 
> So I'm getting what I think are great results on my system with my 
> Xenomai-enabled software (a few usec jitter, ~10usec latency or offset 
> without anything special done when building or calibrating Xenomai. The 
> system is a fairly modern dual-processor Xeon desktop machine and 
> Xenomai is 2.4.7; kernel is 2.6.26 (needed for a third party device 
> driver which breaks with 2.6.27).
> 
> When running at a very low rate (10Hz) every 30 seconds or so there is a 
> latency spike of around 50usec. Not bad (and acceptable for my system 
> even at kHz rates), but it certainly stands out from the usual case.
> 
> Could this occasional extra latency be due to this signal interrupt and 
> transparent restart? Or should I dig around elsewhere?
> 

Linux signal handling is fully preemptible by Xenomai like most of what
happens in plain kernel context, so this is most likely not related. I
mean that a task receiving a signal would not delay a real-time task
(unless both tasks are somehow logically bound, but I guess this is not
the case here).

Maybe counter-intuitively, the lower the rate, the higher the latency.
This is due to cache artifacts, since at low rate, the non-RT Linux
activity has even more opportunities to cause cache eviction of RT code
since it may run longer. This is why running a latency test at 10Khz
most often gives better results than running it at 1Khz on any
architecture (e.g. latency -p 100 vs latency -p 1000). However, bumping
from 10 to 50 us seems quite a large penalty for such situation,
especially on high-end x86 architectures.

The fact that such peak seems to occur periodically may point the finger
at an external factor, like SMI-like preemption (even if the penalty
usually observed in this case is more in the 300 us range).

In order to understand what is going on your system, I would first try
to reproduce the issue using the Xenomai latency, running at 10hz, on a
kernel enabling the I-Pipe tracer (CONFIG_IPIPE_TRACE). The latency test
provides an option that takes a snapshot of the kernel execution path at
the time the highest latency was observed (-f switch). i.e.

# echo 1 > /proc/ipipe/trace/verbose
# echo 200 > /proc/ipipe/trace/back_trace_points
# /usr/xenomai/bin/latency -p 100000 -f

Once this latency has been observed, just stop the latency test, then
read /proc/ipipe/trace/frozen to get the trace log, and post it to this
list.

HTH, 

> TIA
> 
>                            - Tom
-- 
Philippe.




  reply	other threads:[~2009-05-01  9:34 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200904301508.29432@domain.hid>
     [not found] ` <200904301509.13094@domain.hid>
     [not found]   ` <200904301510.8382@domain.hid>
     [not found]     ` <200904301511.15875@domain.hid>
     [not found]       ` <200904301512.9035@domain.hid>
     [not found]         ` <200904301513.12716@domain.hid>
     [not found]           ` <200904301514.6099@domain.hid>
     [not found]             ` <200904301515.16182@domain.hid>
2009-04-30 13:16               ` [Xenomai-help] rtdm_event_timedwait returns -EINTR Petr Cervenka
2009-04-30 14:09                 ` Thomas Lockhart
2009-04-30 14:55                   ` Philippe Gerum
2009-04-30 15:27                     ` Gilles Chanteperdrix
2009-04-30 18:37                       ` Philippe Gerum
2009-05-02 16:27                         ` Gilles Chanteperdrix
2009-05-02 18:31                           ` Philippe Gerum
2009-05-04  8:24                       ` Petr Cervenka
2009-05-04  8:41                         ` Philippe Gerum
2009-04-30 22:40                     ` Thomas Lockhart
2009-05-01  9:34                       ` Philippe Gerum [this message]
2009-05-01  9:40                       ` Philippe Gerum
2009-05-01 21:35                         ` Thomas Lockhart
2009-05-01 22:07                           ` Philippe Gerum
2009-05-01 23:44                             ` Thomas Lockhart
     [not found] <200905041613.30996@domain.hid>
     [not found] ` <200905041614.26154@domain.hid>
     [not found]   ` <200905041615.12763@domain.hid>
     [not found]     ` <200905041616.11698@domain.hid>
     [not found]       ` <200905041617.10314@domain.hid>
     [not found]         ` <200905041618.6444@domain.hid>
     [not found]           ` <200905041619.25024@domain.hid>
     [not found]             ` <200905041620.27181@domain.hid>
2009-05-04 14:20               ` Petr Cervenka
2009-05-04 14:22                 ` Philippe Gerum
2009-05-04 14:29                   ` Philippe Gerum
2009-05-04 16:11                     ` Petr Cervenka
2009-05-04 16:21                       ` Gilles Chanteperdrix
2009-05-05  8:22                         ` Petr Cervenka
2009-05-04 17:15                       ` Philippe Gerum

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=1241170460.26544.205.camel@domain.hid \
    --to=rpm@xenomai.org \
    --cc=Thomas.Lockhart@domain.hid \
    --cc=grugh@domain.hid \
    --cc=thomas.g.lockhart@domain.hid \
    --cc=xenomai@xenomai.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.