From: Juan Quintela <quintela@redhat.com>
To: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Zachary Amsden <zamsden@redhat.com>,
kvm@vger.kernel.org, Avi Kivity <avi@redhat.com>,
Glauber Costa <glommer@redhat.com>,
linux-kernel@vger.kernel.org
Subject: Re: [KVM TSC trapping / migration 2/2] Add TSC KHZ MSR
Date: Fri, 14 Jan 2011 12:00:02 +0100 [thread overview]
Message-ID: <m3bp3jwy19.fsf@trasno.org> (raw)
In-Reply-To: <20110110135053.GA12991@amt.cnet> (Marcelo Tosatti's message of "Mon, 10 Jan 2011 11:50:53 -0200")
Marcelo Tosatti <mtosatti@redhat.com> wrote:
> On Fri, Jan 07, 2011 at 10:44:20AM -1000, Zachary Amsden wrote:
>> On 01/07/2011 12:48 AM, Marcelo Tosatti wrote:
>> >On Thu, Jan 06, 2011 at 12:10:45AM -1000, Zachary Amsden wrote:
>> >>Use an MSR to allow "soft" migration to hosts which do not support
>> >>TSC trapping. Rather than make this a required element of any
>> >>migration protocol, we allow the TSC rate to be exported as a data
>> >>field (useful in its own right), but we also allow a one time write
>> >>of the MSR during VM creation. The result is that for the common
>> >>use case, no protocol change is required to communicate TSC rate
>> >>to the receiving host.
>> >Migration to hosts which do not support the feature can be achieved by
>> >saving/restoring the TSC rate + flags in a subsection. A subsection
>> >seems more appropriate than an MSR for this.
>>
>> Yes, I looked at that, but it looked to me like a subsection was
>> intended for an optional feature which MUST be present on the
>> destination if the source is using the feature. This way, newer
>> hosts without the feature enabled can migrate to older hosts which
>> do not support the feature.
>
> Right. But you can use a subsection to achieve the same effect. Just
> consider that the source is not using the feature if you want to migrate
> to an older host without support for it. Juan, is there a problem to
> use subsections in this fashion?
>
> With the MSR scheme, there is no way for management to enforce support
> of the feature on the destination (at least not that i can see). And
> you create an MSR that does not exist on real hardware.
>
>>
>> The TSC rate migration is slightly different; we may wish to migrate
>> from a host with the TSC rate feature enabled to a host which does
>> not support the TSC rate feature. This is exactly the current
>> behavior, the TSC rate will change on that migration, and I wanted
>> to preserve that behavior. I don't advise that mode of usage, but
>> there may be use cases for it and it should be decided by policy,
>> not dictated by our feature set.
>>
>> That said, I'm happy to remove the MSR if we truly don't want to
>> support that mode of usage.
Ok, I chime it late.
We are adding a new MSR to the comunication with userspace. So far so
good, but this new field, need to be transmited to the "other end" of
the migration. This means a new field for migration (notice that this
is independtly if this is an MSR or not).
VMSTATE_UINT64_V(system_time_msr, CPUState, 11),
VMSTATE_UINT64_V(wall_clock_msr, CPUState, 11),
This are the values that we are sending now.
We are getting now, a new value, the problem is how to migrate it.
Solutions:
- create a new field in a new field in CPUState, and up the version.
That would make backward migration impossible.
- create a new field, and sent it only it is has been used with a
subsection. This makes migration backwards if this was not used.
- but, it appears that there if this features is not "known" on
destination, we can use the old way to migrate information.
BIG WARNING HERE: I don't claim to understand how clocks work at all
There is not a way to convince old qemu/kernels to ignore new fields
for good reason. So the only solution here is to encode this new
vcpu->kvm->arch.virtual_tsc_khz in the two previous fields, in a way
that is understable for old qemu/new qemu. old qemu will use old
method, new qemu will use a new method.
If there is not a common encoding that will work for both old/new
method, I can't really think of a way to make things work here :(
And as per the warning, I can't think of a way to encode
"virtual_tsc_khz" into "system_time_msr" and "wall_clock_msr" off-hand.
To make things clearer about optional features, after "lots" of
discussions, it was decided that target of migration will never ignore
anything sent, that means that the only one that can decide not to sent
a feature/value is the "source" of the migration. There is no way to
express:
- try this method, if you don't know
- try this other second best, ...
and so on.
Later, Juan.
next prev parent reply other threads:[~2011-01-14 11:01 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-06 10:10 KVM TSC trapping Zachary Amsden
2011-01-06 10:10 ` [KVM TSC trapping / migration 1/2] Add TSC trapping for SVM and VMX Zachary Amsden
2011-01-06 10:10 ` Zachary Amsden
2011-01-06 10:41 ` Alexander Graf
2011-01-06 11:30 ` Zachary Amsden
2011-01-06 11:38 ` Alexander Graf
2011-01-06 20:24 ` Zachary Amsden
2011-01-06 22:38 ` Alexander Graf
2011-01-07 3:10 ` Zachary Amsden
2011-01-06 11:32 ` Avi Kivity
2011-01-06 20:03 ` Zachary Amsden
2011-01-07 11:23 ` Marcelo Tosatti
2011-01-09 8:05 ` Zachary Amsden
2011-01-10 11:52 ` Joerg Roedel
2011-01-06 10:10 ` [KVM TSC trapping / migration 2/2] Add TSC KHZ MSR Zachary Amsden
2011-01-06 10:34 ` Alexander Graf
2011-01-06 11:27 ` Zachary Amsden
2011-01-06 11:40 ` Alexander Graf
2011-01-06 20:34 ` Zachary Amsden
2011-01-07 10:48 ` Marcelo Tosatti
2011-01-07 20:44 ` Zachary Amsden
2011-01-10 13:50 ` Marcelo Tosatti
2011-01-14 11:00 ` Juan Quintela [this message]
2011-01-18 15:47 ` Zachary Amsden
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3bp3jwy19.fsf@trasno.org \
--to=quintela@redhat.com \
--cc=avi@redhat.com \
--cc=glommer@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=zamsden@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox