|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
Re: [Xen-ia64-devel] Question about time_interpolator_get_counter() in R
On Mon, 2007-01-15 at 19:02 +0900, Masaki Kanno wrote:
> Hi Alex,
>
> Could you comment a this issue?
>
> When we tested RHEL4 on domVTi of SMP, we met with hanging up of the
> RHEL4. We examined this issue with the xenctx. As a result, the each
> VCPUs of domVTi seemed to be looping in the following functions.
> - A VCPU is looping in time_interpolator_get_counter().
> - Other VCPUs are looping in fsys_gettimeofday().
>
> When we were examining this issue further, we found your patch about
> time_interpolator_get_counter().
>
> [PATCH] optimize writer path in time_interpolator_get_counter()
> http://lkml.org/lkml/2005/8/1/134
Hi Kan,
That sounds like the right scenario. Both of these code paths are
using seqlocks to allow multiple CPUs to try to update the last_cycle
value via a cmpxchg. The optimization I added allows the CPU holding
the write lock to update the last_cycle counter and exit without
competing with the other CPUs in the cmpxchg. This significantly
reduces the contention caused by the cmpxchg and maintains correctness
because the readers (on the fsys_gettimeofday path) cannot exit while a
write seqlock is held. I only saw a true live-lock in this code segment
with a prototype processor, but the possibility for it certainly exists.
I could see the scheduling of vCPUs potentially making this problem more
likely. Thanks,
Alex
--
Alex Williamson HP Open Source & Linux Org.
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|
|
|
|
|