From: Philippe Gerum <rpm@xenomai.org>
To: Jan Kiszka <jan.kiszka@domain.hid>
Cc: xenomai-core <xenomai@xenomai.org>
Subject: Re: [Xenomai-core] Synchronising TSC and periodic timer
Date: Wed, 15 Mar 2006 13:59:36 +0100 [thread overview]
Message-ID: <44180FB8.7080200@domain.hid> (raw)
In-Reply-To: <4417C14A.2010900@domain.hid>
Jan Kiszka wrote:
> Jan Kiszka wrote:
>
>>Hi,
>>
>>for those who haven't followed the endless "RTDM and Timer functions"
>>thread: we are currently discussing a way to provide high-resolution
>>timestamps in periodic mode for RTDM users. It was suggested to use the
>>TSC for this, but I noted that this source will not be in sync with the
>>periodic system timer and may even be out of sync across multiple CPUs.
>>
>>A straight-forward approach to overcome this might be to record the
>>current TSC value together with the current jiffies in
>>xntimer_do_tick_periodic(). This tuple (per CPU) could then be provided
>>to skin implementers in order to let them offer a high-resolution
>>timestamp source even in periodic mode. Hmm, sounds too simple actually,
>>so I'm waiting now for someone pointing out the pitfalls.
>
>
> Likely too simple: The periodic IRQ seems to pop up on every CPU so that
Talking about x86, indeed it does, so that each per-CPU scheduler can have its own
time feed. The basic principle is as follows on Xenomai SMP/x86:
- a spare APIC vector is used to relay the timer ticks to the Xenomai domain,
grabbing the APIC timer to trigger those ticks (see RTHAL_APIC_TIMER_VECTOR).
- Xenomai timer ticks are programmed to occur on all CPUs, feeding the per-CPU
schedulers with timing data, so that each CPU can in turn update the global
scheduling state according to possible wakeups/suspensions.
- when a thread needs to be awaken or suspended on a remote CPU after a local tick
on the local one, an IPI is sent to invoke the rescheduling procedure on the
remote CPU (see xnpod_schedule)).
This also applies to Xeno's ia64 port.
> the TSC could be recorded, but will this happen synchronously?
Nope. You could not predict the state of hardware and/or virtual interrupt masking
on a particular CPU when the IRQ get raised anyway.
At least
> we will see (IRQ) jitters, and those jitters could already create in the
> single-CPU case a non-monotonic clock...
>
At worst, you would see an old timestamp from a previous shot while the timer IRQ
announcing the most accurate one is still outstanding but untaken, but I think
that you would still have something behaving in a monotonic way though.
> Does anyone ever studied if and how Linux synchronises across CPUs?
> There was some activity around the problematic AMD64 multicores, but I
> haven't looked at the details and if it's actually solved now.
>
Only once during boot AFAICT, see arch/i386/kernel/smpboot.c. This said, TSC
synchronization would not work on NUMA boxen.
> Jan
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Xenomai-core mailing list
> Xenomai-core@domain.hid
> https://mail.gna.org/listinfo/xenomai-core
--
Philippe.
next prev parent reply other threads:[~2006-03-15 12:59 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-14 20:45 [Xenomai-core] Synchronising TSC and periodic timer Jan Kiszka
2006-03-15 7:24 ` Jan Kiszka
[not found] ` <4417C74D.3060203@domain.hid>
2006-03-15 8:14 ` Jan Kiszka
2006-03-15 12:59 ` Philippe Gerum [this message]
2006-03-15 13:26 ` Gilles Chanteperdrix
2006-03-15 22:58 ` Philippe Gerum
2006-03-20 11:48 ` Jan Kiszka
2006-03-20 13:26 ` Philippe Gerum
2006-03-20 14:42 ` Rodrigo Rosenfeld Rosas
2006-03-20 16:51 ` Philippe Gerum
2006-03-20 19:27 ` Rodrigo Rosenfeld Rosas
2006-03-21 0:11 ` Jan Kiszka
2006-03-21 3:11 ` Rodrigo Rosenfeld Rosas
2006-03-20 14:46 ` Jan Kiszka
2006-03-21 12:44 ` Philippe Gerum
2006-03-24 13:14 ` Jan Kiszka
[not found] ` <200603201137.12548.rosenfeld@domain.hid>
2006-03-20 15:23 ` Philippe Gerum
2006-03-20 19:01 ` Rodrigo Rosenfeld Rosas
2006-03-21 17:57 ` Philippe Gerum
2006-03-15 13:34 ` Gilles Chanteperdrix
2006-03-15 16:50 ` Jan Kiszka
2006-03-16 15:26 ` Gilles Chanteperdrix
2006-03-17 1:16 ` Jan Kiszka
[not found] <1CFEB358338412458B21FAA0D78FE86D02CABF1C@rennsmail02.eu.thmulti.com>
2006-03-15 17:20 ` Jan Kiszka
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=44180FB8.7080200@domain.hid \
--to=rpm@xenomai.org \
--cc=jan.kiszka@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.