From: Jan Kiszka <jan.kiszka@domain.hid>
To: Jonas Witt <jonas.witt@domain.hid>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-help] Huge clock drift
Date: Mon, 30 May 2011 15:08:36 +0200 [thread overview]
Message-ID: <4DE396D4.40508@domain.hid> (raw)
In-Reply-To: <4DE38E79.20308@domain.hid>
On 2011-05-30 14:32, Jonas Witt wrote:
> Am 30.05.2011 12:33, schrieb Pavel Machek:
>> On Mon 2011-05-30 12:31:16, Jonas Witt wrote:
>>> Am 30.05.2011 09:57, schrieb Jan Kiszka:
>>>> On 2011-05-30 09:43, Jonas Witt wrote:
>>>>> Am 30.05.2011 09:07, schrieb Jan Kiszka:
>>>>>> On 2011-05-30 09:03, Pavel Machek wrote:
>>>>>>> On Sat 2011-05-28 16:32:45, Jan Kiszka wrote:
>>>>>>>> On 2011-05-27 21:11, Gilles Chanteperdrix wrote:
>>>>>>>>> On 05/27/2011 08:29 PM, Jonas Witt wrote:
>>>>>>>>>> Sorry, I missed the NTP-part. I am not using NTP. Just plain
>>>>>>>>>> timer
>>>>>>>>>> queries on a single system.
>>>>>>>>>>
>>>>>>>>>> My clock source is tsc which is the same for Xenomai I suppose.
>>>>>>>>>>
>>>>>>>>>> I wonder how a Xenomai task, even if it occupies 50% or even 90%
>>>>>>>>>> of a 4
>>>>>>>>>> milliseconds time slice can interfere with the tsc. The tsc is
>>>>>>>>>> not
>>>>>>>>>> incremented via an interrupt, is it? But I do not know much
>>>>>>>>>> about the
>>>>>>>>>> inner workings of these functions.
>>>>>>>>> The problem is not the clocksource, the problem is the timer
>>>>>>>>> interrupt.
>>>>>>>>> The kernel expects 1 timer tick every millisecond.
>>>>>>>> Not on archs that are CONFIG_NO_HZ capable.
>>>>>>> Umm. NO_HZ is only active while system is idle. Kernel will still
>>>>>>> expect the periodic ticks when CPU is busy....
>>>>>>>
>>>>>>> (I'm not sure how the compensation works; perhaps it can compensate
>>>>>>> even while busy..)
>>>>>> See update_wall_time, the !CONFIG_ARCH_USES_GETTIMEOFFSET includes no
>>>>>> fixed tick length.
>>>>>>
>>>>>> Again, this is also important for Linux when running over hypervisors
>>>>>> which tend to miss ticks on overcommitment as well.
>>>>>>
>>>>>> Jan
>>>>> Thanks for the active discussion of the issue. I attached my config.
>>>>> CONFIG_NO_HZ is activated and I think I disabled all power management
>>>>> and frequency scaling correctly. Do you think it is worth trying a
>>>>> kernel with fixed Hz as Gilles suggested? Actually the 1ms Xenomai
>>>>> load
>>>>> seems to play at least some role in the issue.
>>>> For sure, I may also be proven wrong by plain reality.
>>>>
>>>> In addition, enable CONFIG_PM and ACPI with the exception of
>>>> ACPI_PROCESSOR. Who knows what your BIOS is doing in the absence of OS
>>>> support for this.
>>>>
>>>> Jan
>>> I just compiled another kernel with an alternate configuration as
>>> you and Gilles described (see the attached file). Now this is the
>>> result:
>>>
>>> # ./clocktest
>>> == Tested clock: 0 (CLOCK_REALTIME)
>>> CPU ToD offset [us] ToD drift [us/s] warps max delta [us]
>>> --- -------------------- ---------------- ---------- --------------
>>> 0 -1004111.0 0.026 0 0.00
>>> 1 -1004110.4 0.025 0 0.0
>>>
>>>
>>> Looks perfect now (even with 2500us processing of 4000us periods)! A
>>> big thank you to all of you. So either the 100Hz changed the
>>> situation or the ACPI changes. The secondary mode switches for my
>>> XenoQueue are still there, though. I will work on a minimal test
>>> program to reproduce this. Thanks again! Do you think this
>>> configuration advice should be put somewhere for others to read?
>> If you could verify config with 100Hz but no ACPI changes, that would
>> be great...
> I just built another kernel with power management completely disabled
> and got similar timing results. So it actually seems to be related to
> timer interrupts that are missed in the 1000Hz setting as Gilles suggested.
Weird and not explainable.
I'm currently running a RT CPU hog that eats 500 ms of each second on a
single-core x86-64 box, and clocktest reports the very same drift as
without any load. I'll see if I can give your .config a try later on.
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
prev parent reply other threads:[~2011-05-30 13:08 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-26 17:28 [Xenomai-help] Huge clock drift Jonas Witt
2011-05-27 6:40 ` Gilles Chanteperdrix
2011-05-27 14:19 ` Jonas Witt
2011-05-27 14:38 ` Gilles Chanteperdrix
2011-05-27 15:05 ` Jan Kiszka
2011-05-27 16:22 ` Gilles Chanteperdrix
2011-05-27 18:29 ` Jonas Witt
2011-05-27 19:11 ` Gilles Chanteperdrix
2011-05-28 14:32 ` Jan Kiszka
2011-05-28 22:08 ` Gilles Chanteperdrix
2011-05-29 15:38 ` Jan Kiszka
2011-05-30 7:03 ` Pavel Machek
2011-05-30 7:07 ` Jan Kiszka
2011-05-30 7:43 ` Jonas Witt
2011-05-30 7:57 ` Jan Kiszka
2011-05-30 10:31 ` Jonas Witt
2011-05-30 10:33 ` Pavel Machek
2011-05-30 12:32 ` Jonas Witt
2011-05-30 13:08 ` Jan Kiszka [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=4DE396D4.40508@domain.hid \
--to=jan.kiszka@domain.hid \
--cc=jonas.witt@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.