From: Avi Kivity <avi@redhat.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: Alexander Graf <agraf@suse.de>,
"Serebrin,
Benjamin (Calendar)" <Benjamin.Serebrin@exchange.amd.com>,
Skywing <Skywing@valhallalegends.com>,
Anthony Liguori <anthony@codemonkey.ws>,
kvm@vger.kernel.org, Amit Shah <amit.shah@redhat.com>,
"Wahlig, Elsie" <elsie.wahlig@amd.com>,
"Nakajima, Jun" <jun.nakajima@intel.com>
Subject: Re: Cross vendor migration ideas
Date: Sun, 16 Nov 2008 17:36:30 +0200 [thread overview]
Message-ID: <49203DFE.1070101@redhat.com> (raw)
In-Reply-To: <491F08F1.40501@firstfloor.org>
Andi Kleen wrote:
>> Yes, but since we're emulating a CPU anyways we don't want vendor
>> specific setup, since we might live migrate.
>>
>
> I was mainly thinking of tuning.
>
> For example Linux selects the best suitable page copy
> function based on vendor information. Using the wrong page copy
> can have a large impact on your performance.
>
We can tell Linux to retune using a custom ACPI (blech) event.
>>> Also it might break user space, unless you key the fake vendor CPUID
>>> intercept on ring 0 vs ring 3 (but even if that might not be enough
>>> because some kernel modules can call CPUID on their own)
>>>
>> Is there userspace code that relies on GenuineIntel?
>>
>
> Yes. Undoubtedly also the same with others.
>
This will not work of course for userspace.
>>> I think just emulating SYSCALL/SYSENTER would be safer. It shouldn't
>>> be that much slower than int 0x80 hopefully.
>>>
>> Well emulating them means you're leaving the VM on every user<->kernel
>> transition. That's a _huge_ performance hit. I don't have the numbers,
>> but IIRC a roundtrip is ~3000 cycles.
>>
>
> Depends on the CPU. Newer CPUs are faster.
>
I think emulation will be slower than 3000 cycles, even on newer cpus.
In addition to the #vmexit, you have to save all registers, walk the
guest page tables to fetch the instruction, execute the emulator code
including all the checks, go back to the guest. Then do the same again
on sysexit/sysret -- the overhead doubles.
> Also you would select the default based on which CPU you're booting
> on. So initially and as long as you stay on the same
> vendor you'll have full performance. Only if you switch
> vendors later you'll also eat the emulation hit (and get it
> back again when you switch back to a system with the original vendor)
> But everything will still work correctly and that is the
> important part.
>
> Doesn't sound so bad to me.
>
Long running guests on a large farm shouldn't expect to stay on the same
host they were booted on. But at least for Linux, if we notify the
guest telling it to retune (which can include the vsyscall path) we can
avoid the cost entirely.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2008-11-16 15:36 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-12 15:39 Cross vendor migration ideas Alexander Graf
2008-11-12 15:45 ` Anthony Liguori
2008-11-12 15:50 ` Alexander Graf
2008-11-12 15:59 ` Anthony Liguori
2008-11-13 0:02 ` Skywing
2008-11-13 1:48 ` Serebrin, Benjamin (Calendar)
2008-11-15 13:03 ` Andi Kleen
2008-11-15 16:39 ` Alexander Graf
2008-11-15 17:37 ` Andi Kleen
2008-11-16 15:36 ` Avi Kivity [this message]
2008-11-17 11:09 ` Andi Kleen
2008-11-17 11:59 ` Avi Kivity
2008-11-15 17:38 ` Glauber Costa
2008-11-16 14:58 ` Avi Kivity
2008-11-13 10:16 ` Avi Kivity
2008-11-12 20:06 ` Andi Kleen
2008-11-12 20:52 ` Alexander Graf
2008-11-13 10:20 ` Avi Kivity
2008-11-12 16:52 ` Amit Shah
2008-11-12 17:19 ` Alexander Graf
2008-11-13 4:35 ` Amit Shah
2008-11-13 13:38 ` Alexander Graf
2008-11-14 13:07 ` Amit Shah
2008-11-14 23:43 ` Nitin A Kamble
2008-11-17 10:07 ` Amit Shah
-- strict thread matches above, loose matches on Subject: below --
2008-11-16 0:23 Skywing
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=49203DFE.1070101@redhat.com \
--to=avi@redhat.com \
--cc=Benjamin.Serebrin@exchange.amd.com \
--cc=Skywing@valhallalegends.com \
--cc=agraf@suse.de \
--cc=amit.shah@redhat.com \
--cc=andi@firstfloor.org \
--cc=anthony@codemonkey.ws \
--cc=elsie.wahlig@amd.com \
--cc=jun.nakajima@intel.com \
--cc=kvm@vger.kernel.org \
/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