|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?)
On 09/01/09 15:08, Dan Magenheimer wrote:
>>> Just like what is being used to allow apps to get the CPU
>>>
>> number on native
>>
>>> kernels (or the vCPU one on Xen-ified ones): Have a GDT
>>>
>> entry the limit of
>>
>>> which is the number you want, and have the app use the lsl
>>>
>> instruction to
>>
>>> get at it.
>>>
>> Yes, that's true. Xen could provide such a segment descriptor
>> in its private
>> area of the GDT. The issue then would be that, in a compound pvclock
>> operation spanning multiple machine instructions, the pCPU
>> number revealed
>> by the LSL instruction can be stale by the time it is used
>> later in the
>> compound operation.
>>
> The algorithm could check the pCPU number before and after
> reading the pvclock data and doing the rdtsc, and if they
> don't match, start again. (Doesn't the pvclock algorithm
> already do that with some versioning number in the pvclock
> data itself to ensure that the rest of the data didn't
> change while it was being read?)
>
There's still a race there, if the thread switched PCPU twice during the
operation:
<running on PCPU A>
get CPU #
<switch to PCPU B>
read tsc
apply corrections from (from PCPU A)
<switch to PCPU A>
check CPU # is the same as we started with: all OK!
note that the <switch to PCPU B> could either be a result of the Xen
scheduler moving the VCPU *or* the Linux scheduler moving the thread to
a different VCPU. In the former case, Xen could update a version
counter to help detect the discontinuity, but it doesn't really know
about guest scheduling decisions. I guess the guest kernel could update
the pvclock version counter itself.
> I'm clueless about GDTs and the LSL instrution so would
> need some help prototyping this.
>
It's what vsyscall already uses. Your scheme is precisely analogous to
what's already there.
J
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), (continued)
- [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Dan Magenheimer
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Keir Fraser
- RE: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Dan Magenheimer
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?),
Jeremy Fitzhardinge <=
- RE: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Dan Magenheimer
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Jeremy Fitzhardinge
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Keir Fraser
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Jeremy Fitzhardinge
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Keir Fraser
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Jeremy Fitzhardinge
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Jan Beulich
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Jeremy Fitzhardinge
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Jan Beulich
- Re: [Xen-devel] RE: rdtsc: correctness vs performance on Xen (and KVM?), Jeremy Fitzhardinge
|
|
|
|
|