[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: s_time going backwards on same processor?



Which clocksource was this with? It would be worth saving the previous tsc
and struct cpu_time values so you can print those out when you see s_time
goes backwards. It'll make it much easier to see what actually went
'backwards' -- also we could run through the 'prev' and 'now' s_time
calculation arithmetic manually to see if any of the arithmetic is at fault.

 -- Keir

On 26/7/08 15:50, "Dan Magenheimer" <dan.magenheimer@xxxxxxxxxx> wrote:

> Thanks Kevin for catching that.  I fixed it using spin_lock_irqsave
> and spin_unlock_irqrestore and have already seen stime going
> backwards... I haven't retested all the clocksources and smp.
> but it doesn't appear that the incorrect enablement of
> interrupts was the problem.
> 
> It's interesting that the problem occurs even with one processor.
> Hopefully that will make it easier to debug.
> 
> Updated debug patch attached.
> 
> Thanks,
> Dan
> 
>> -----Original Message-----
>> From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx]
>> Sent: Saturday, July 26, 2008 12:51 AM
>> To: Tian, Kevin; dan.magenheimer@xxxxxxxxxx; Xen-Devel (E-mail)
>> Cc: Dave Winchell
>> Subject: Re: s_time going backwards on same processor?
>> 
>> 
>> The code should be using spin_lock_irqsave/spin_unlock_irqrestore.
>> 
>> As it is it's incorrect and could cause odd behaviour. I
>> don't know whether
>> that would extend to seeing time goes backwards as often as
>> Dan reports, but
>> obviously the test has to be re-run.
>> 
>>  -- Keir
>> 
>> On 26/7/08 03:23, "Tian, Kevin" <kevin.tian@xxxxxxxxx> wrote:
>> 
>>> In a quick glimpse, your measure_stime_skew has interrupt
>>> enabled absolutely at exit, instead of restoring previous
>>> setting. Would it be a trouble-maker? I have no latest code
>>> at hand, but at least for what I can check:
>>> 
>>> in local_time_calibration:
>>> 
>>>     local_irq_disable();
>>>     curr_master_stime = read_platform_stime();
>>>     curr_local_stime  = get_s_time();
>>>     rdtscll(curr_tsc);
>>>     local_irq_enable();
>>> 
>>> with your patch, interrupt is enabled after get_s_time, which
>>> then may have curr_tsc read out from a different time point...
>>> 
>>> Thanks,
>>> Kevin
>>> 
>>>> From: Dan Magenheimer [mailto:dan.magenheimer@xxxxxxxxxx]
>>>> Sent: 2008年7月26日 9:47
>>>> 
>>>> OK, I am definitely recording stime going backwards
>>>> observed with the attached patch.  I have recorded dozens
>>>> over a few hours.  It appears to have no
>>>> obvious pattern between reports, but one thing
>>>> is consistent: In all cases, t->tsc_scale.shift
>>>> is -1.  I'll try to run some more tests over the
>>>> weekend (e.g. with different clocksources... this
>>>> is with clocksource=hpet), but thought I'd report
>>>> what I have seen.  I'm running on a dual-core single
>>>> socket ("Conroe").
>>>> 
>>>> Dan
>>>> 
>>>> P.S. If you try the patch, ensure you set
>>>> the boot parameter "measurestime".
>>>> 
>>>>> -----Original Message-----
>>>>> From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx]
>>>>> Sent: Wednesday, July 23, 2008 1:06 AM
>>>>> To: dan.magenheimer@xxxxxxxxxx; Xen-Devel (E-mail)
>>>>> Cc: Dave Winchell
>>>>> Subject: Re: s_time going backwards on same processor?
>>>>> 
>>>>> 
>>>>> On 22/7/08 22:58, "Dan Magenheimer"
>>>>> <dan.magenheimer@xxxxxxxxxx> wrote:
>>>>> 
>>>>>> I *do* know that get_s_time() on different processors
>>>>>> can have this behavior and I know it is possible for
>>>>>> hvm_get_guest_time() to go backwards (timer_mode=0),
>>>>>> but I thought s_time was monotonically non-decreasing
>>>>>> on any given processor and that read_platform_stime()
>>>>>> is also monotonically non-decreasing.
>>>>>> 
>>>>>> Does dom0 maybe have direct hardware access to the hardware
>>>>>> platform timer that xen system time is dependent on?
>>>>> 
>>>>> No matter what happens to the underlying platform timer,
>> it should be
>>>>> impossible for Xen system time to go backwards on any given
>>>>> processor. The
>>>>> calibration function never sets the TSC and system timestamps
>>>>> for the next
>>>>> time record any earlier than current TSC value and current
>>>>> computed system
>>>>> time value. Hence it should be impossible for system time to
>>>>> be computed as
>>>>> earlier than that time record.
>>>>> 
>>>>>  -- Keir
>>>>> 
>>>>> 
>>>>> 
>>>> 
>> 
>> 
>> 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.