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

Re: [Xen-devel] [PATCH v2 00/14] Add VMX TSC scaling support

On 11/12/15 07:35, Tian, Kevin wrote:
>> From: Zhang, Haozhong
>> Sent: Thursday, December 10, 2015 7:13 PM
>> On 12/10/15 10:43, Tian, Kevin wrote:
>>>> From: Andrew Cooper [mailto:andrew.cooper3@xxxxxxxxxx]
>>>> Sent: Tuesday, December 08, 2015 1:04 AM
>>>> On 07/12/15 10:16, Haozhong Zhang wrote:
>>>>> On 12/07/15 10:03, Egger, Christoph wrote:
>>>>>> Did you consider nested virtualization?
>>>>>> L1 hypervisor may have a different tsc scaling
>>>>>> and L2 guest again may have a different tsc scale ratio.
>>>>> Oh, I forgot this. I'll check the nested TSC scaling code (mostly
>>>>> about nested SVM TSC ratio, because this patch series does not expose
>>>>> VMX TSC scaling to L1 guest).
>>>>> BTW, are there any practical usage scenarios of nested TSC scaling? If
>>>>> any, I may also need to consider adding nested virtualization support
>>>>> to VMX TSC scaling.
>>>> I would say that there are genuine uses for nested TSC scaling.  An L1
>>>> hypervisor is going to want to scale for the same reasons as the L0
>>>> hypervisor.
>>>> Having said that, if TSC scaling is correctly hidden from the L1 guests,
>>>> I would advise against conflating the two issues together.  i.e. getting
>>>> nested TSC scaling working is not a prerequisite for accepting this series.
>>> Why is nested TSC scaling even an issue? If L0 hypervisors cross hosts
>>> can always guarantee constant TSC frequency through TSC scaling, L1
>>> hypervisor will never see inconstant TSC frequency so why bother to
>>> expose TSC scaling at all?
>> If exposing TSC scaling to L1, then L0 hypervisor will need to adapt
>> the TSC scaling ratio set by L1 hypervisor, which has not been done by
>> this patch series.
>> Consider an example that the host TSC frequency is freq_0 and
>> 1. L0 Xen sets TSC scaling ratio to a non-identical one ratio_0.
>> 2. Then L1 hypervisor will observe a "host" TSC frequency (freq_0 * ratio_0).
>> 3. If L1 hypervisor sets a TSC scaling ratio ratio_1, it intends to
>>    provide a guest TSC frequency (freq_0 * ratio_0 * ratio_1).
>>    However, if ratio_1 is directly written into nested VMCS that is
>>    later applied to the host CPU, then the L2 guest will get an
>>    incorrect guest TSC frequency (freq_0 * ratio_1).
> My point is why we need expose TSC scaling to L1, if L0 has ensures
> constant TSC w/ TSC scaling ratio...

Because a set of L1 hypervisors might want to migrate VMs between them.

Or a more interesting setup migrating VMs between L0 and L1
hypervisors.  (I tried this once and it didn't blow up)

Once constant TSC has been advertised to a guest, any future hypervisor
it might find itself on must be able to guarantee to provide the same


Xen-devel mailing list



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