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

Re: [Xen-ia64-devel] [IPF-ia64] with Cset 10690, creating aVTImakexen0 hang



Hi, Anthony and Yamahata

Thank you for your comments. and sorry for late.
I know Anthony modification(stop_timer) fix the problem in empirically. 
But, I am investigating the reason.

The problem is two timer function exists after defining the hlt_timer_fn.
Two timer function confliction exists within the  vcpu_timer_expired => 
vcpu_pend_timer => DomU => vcpu_set_itm or hyper_set_itm
Because domain_itm keeps old value until vcpu_set_itm or hyper_set_itm is 
called.
For this reason, it has possibility that another VIRQ_ITC interrupt can call 
during this window.
To fix this problem, it should exclude VIRQ_ITC interrupt duing that time 
window.


and this problem is reproduced by using lmbench.(Thanks)


Thanks
Atsushi SAKAI



>Hi, Yamahata,
>
>If this domain depends on hlt_timer to wake it up,
>The scenario you described can appear,
>TIMER_SLOP can reduce this situation, but can't eliminate this situation.
>Maybe we need another mechanism to wake up VCPU, when this VCPU
>has been blocked for a certain time.
>
>Thanks,
>Anthony
>
>
>
>>From: Isaku Yamahata 
>>Hi SAKAI.
>>
>>The Anthony's modification is required.
>>Without the modification, all physical CPUs end up in the idle loop and
>>can't get out of it in spite of runnable vcpus existance because
>>of TIMER_SLOP. This issue isn't related to VT-i domain.
>>
>>Thanks.
>>
>>On Wed, Jul 12, 2006 at 10:30:47PM +0800, Xu, Anthony wrote:
>>> Hi, SAKAI
>>> Forget wrong analysis in early email,
>>>
>>> In the phase of EFI boot, there are many IO operations, so dom0 is woken up
>>by
>>> VTIdomain in most time, while hlt_timer is still registered, this may cause
>>more
>>> timer interrupts injected to dom0 than before.
>>>
>>> Hope following modification help
>>> #define TIMER_SLOP (50*1000) /* ns */
>>>       set_timer(&v->arch.hlt_timer,
>>vcpu_get_next_timer_ns(v)+TIMER_SLOP );
>>>       do_sched_op_compat(SCHEDOP_block, 0);
>>>       stop_timer(&v->arch.hlt_timer);
>>>
>>> Thanks,
>>> Anthony
>>>
>>>
>>> >-----Original Message-----
>>> >From: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
>>> >[mailto:xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Xu,
>>Anthony
>>> >Sent: 2006?7?12? 21:13
>>> >To: Atsushi SAKAI; Alex Williamson; Zhang, Xiantao
>>> >Cc: Isaku Yamahata; xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
>>> >Subject: RE: [Xen-ia64-devel] [IPF-ia64] with Cset 10690,creating
>>aVTImakexen0
>>> >hang
>>> >
>>> >>From: Atsushi SAKAI
>>> >>Sent: 2006?7?12? 19:05
>>> >>My primary motivation is correct display of xenmon.py and xentop in
>>BVT/CREDIT.
>>> >>(N.B. SEDF displayed as same as x86, but BVT/CREDIT are not)
>>> >>If only domU emulation is applied, it is a half way from my motivation.
>>> >>Is dom0 dispatch another home work?
>>> >>
>>> >
>>> >I suspect the slowness is not due to dom0 being scheduled out, but due to
>>> >hlt_timer
>>> >didn't work as expected.
>>> >           set_timer(&v->arch.hlt_timer, vcpu_get_next_timer_ns(v));
>>> >           do_sched_op_compat(SCHEDOP_block, 0);
>>> >There is a time window between set_timer and dom0 being scheduled out, and
>>psr.i
>>> >is 1. So if hlt_timer fires before do_sched_op_compat being called, dom0 
>>> >will
>>> >not be woken up by hlt_timer, and there is no timer interrupt for dom0 
>>> >until
>>> >domo
>>> >is woken up ,yes, dom0 can be woken up by other external interrupts, but 
>>> >not
>>> >by
>>> >timer interrupt. And since dom0 is involved in VTIdomain bootup, this may
>>lead
>>> >to slowness of VTIdomain bootup.
>>> >
>>> >Above is my analysis, there isn't any evidence.
>>> >
>>> >You can do experiment to check it.
>>> >Change above code sequence as following, this may reduce the impact of time
>>> >window.
>>> >
>>> >set_timer(&v->arch.hlt_timer,
>>> >cycle_to_ns(local_cpu_data->itm_delta)+NOW());
>>> >do_sched_op_compat(SCHEDOP_block, 0);
>>> >
>>> >_______________________________________________
>>> >Xen-ia64-devel mailing list
>>> >Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
>>> >http://lists.xensource.com/xen-ia64-devel
>>>
>>> _______________________________________________
>>> Xen-ia64-devel mailing list
>>> Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
>>> http://lists.xensource.com/xen-ia64-devel
>>
>>--
>>yamahata
>







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


 


Rackspace

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