On 2011-05-27 16:38, Gilles Chanteperdrix wrote: > On 05/27/2011 04:19 PM, Jonas Witt wrote: >> Am 27.05.2011 08:40, schrieb Gilles Chanteperdrix: >>> On 05/26/2011 07:28 PM, Jonas Witt wrote: >>>> Hi all, >>>> >>>> i am having a problem concerning the clock drift under load: >>>> >>>> # /usr/xenomai/bin/clocktest >>>> == Tested clock: 0 (CLOCK_REALTIME) >>>> CPU ToD offset [us] ToD drift [us/s] warps max delta [us] >>>> --- -------------------- ---------------- ---------- -------------- >>>> 0 775571614.0 166776.858 0 0.0 >>>> >>>> >>>> It remains in the hundreds of MILLIseconds, changing constantly. My >>>> setup consists of an embedded Intel Atom board (1.6GHz Z530 processor) >>>> with a 2.6.32.7 kernel and Xenomai 2.5.2. >>> Hi Jonas, >>> >>> Could you try and see if 2.5.6 with latest I-pipe patches has the same >>> behaviour? >>> >>>> Latencies under load are >>>> reasonable. Mean latency< 10us. Maximum latency< 40us. >>>> >>>> Without load the ToD offset is approximately constant over time with a >>>> ToD drift in the range of 10 microseconds (strangely after a while this >>>> settles in a range of 2 microseconds). Does anyone have an idea how this >>>> can be caused? >>> First, I am not sure clocktest is meant to be use under load. Second, >>> does your system uses ntp? >>> >>>> As a workaround I currently use rt_timer_read() in all >>>> relevant programs (also the non-realtime ones), since I need consistent >>>> timestamps between realtime and non-realtime tasks. >>> In order to solve this particular issue, we have a solution, but not yet >>> in stable released versions. >>> >>>> One other (maybe unrelated) strange behavior is occasional secondary >>>> mode switches when calling rt_queue_read(...). >>> For this error, we need more details, such as a simple test case >>> allowing to reproduce the issue, and again, you need to be sure to >>> reproduce the issue on latest stable release with latest I-pipe patches. >>> >>> Regards. >> >> Hi Gilles, >> >> thanks for your input. I will try Xenomai 2.5.6 soon. In the meantime I >> wrote a simple load simulator to reproduce the issue with my more >> complex program. The clock drift only occurs with a load of more than >> 30%. Below that the clock is fine. So you may have to adjust the >> attached code (e.g. change the 2000 value in the for-loop to something >> larger) to stress your system to that level where the processing time is >> more than 2000 microseconds. > > My point was that maybe clocktest is not meant to be run under load. To > this, we should ask Jan to answer, as he wrote this test and knows what > is inside.
There are some simple measures in clocktest to check if the clock read-outs were done without major preemptions. But even in extreme load, this should only cause temporary offsets, no constant drift, no persistent delta after taking away the load. What is the clocksourse Linux is using? See /sys/devices/system/clocksource/clocksource0/current_clocksource. More important, you still didn't answer Gilles' question about ntp. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux _______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
