From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>
Cc: kvm-devel <kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: Re: [PATCH 0/8] KVM updates for 2.6.20-rc2
Date: Thu, 28 Dec 2006 14:32:08 +0200 [thread overview]
Message-ID: <4593B948.5090009@qumranet.com> (raw)
In-Reply-To: <20061228113038.GA16190-X9Un+BFzKDI@public.gmane.org>
Ingo Molnar wrote:
> * Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote:
>
>
>> Talking about the scheduler (and to the scheduler's author :), it
>> would be nice to hook the migration weight algorithm too. kvm guests
>> are considerably more expensive to migrate, at least on intel.
>>
>
> what do you mean precisely, and where does the cost come from? To me it
> seems the cost of loading/saving a VMX context on Intel is the biggest
> cost, and that's roughly the same cost for VM exits/enters, regardless
> of what the scheduler does. What am i missing?
>
There are three types of vmx context switches.
1. The most common switch is a vm entry/exit pair (vmresume
instruction). The context is already loaded into the cpu (via a
vmptrld, below), and we enter into a preloaded VM. In addition,
register access implicitly addresses the loaded context.
2. The second most common switch is loading another context. If we have
several VMs on a uniprocessor machine, the execution sequence looks like
this:
vmptrld vm1
... access context registers (vmread/vmwrite)
vmresume
... access context registers (vmread/vmwrite)
... access context registers (vmread/vmwrite)
vmresume
... access context registers (vmread/vmwrite)
... access context registers (vmread/vmwrite)
vmresume
... access context registers (vmread/vmwrite)
Linux context switch to another kvm process
vmptrld vm2
... access context registers (vmread/vmwrite)
vmresume
... access context registers (vmread/vmwrite)
... access context registers (vmread/vmwrite)
vmresume
... access context registers (vmread/vmwrite)
Linux context switch to back to original process
vmptrld vm1
Linux context switches to non-kvm processes and back need no special
handling.
The processor caches the current VM context, and possibly more than one.
3. The most expensive vmx context switch involves cpu migration:
cpu 0: vmclear vm1 /* decache vmx context into memory */
cpu 1: vmptrld vm1
... vm register access
vmlaunch
The vmlaunch instruction, like vmresume, causes a VM entry, but is
documented to be significantly more expensive. It is required after a
vmclear.
Currently, the vmclear is performed by an ipi, because we can only
detect migration after the fact. However, if we enlist the migration
threads, we can vmclear before the process has left the cpu.
--
error compiling committee.c: too many arguments to function
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
next prev parent reply other threads:[~2006-12-28 12:32 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-28 10:07 [PATCH 0/8] KVM updates for 2.6.20-rc2 Avi Kivity
2006-12-28 10:08 ` [PATCH 1/8] KVM: Use boot_cpu_data instead of current_cpu_data Avi Kivity
2006-12-28 10:09 ` [PATCH 2/8] KVM: Simplify is_long_mode() Avi Kivity
2006-12-28 10:12 ` [PATCH 5/8] KVM: Move common msr handling to arch independent code Avi Kivity
2006-12-28 10:13 ` [PATCH 6/8] KVM: More msr misery Avi Kivity
[not found] ` <45939755.7010603-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 10:10 ` [PATCH 3/8] KVM: Initialize kvm_arch_ops on unload Avi Kivity
2006-12-28 10:11 ` [PATCH 4/8] KVM: Implement a few system configuration msrs Avi Kivity
[not found] ` <20061228101117.65A392500F7-LjA0eNSCdXrQnzwC+xcbyw@public.gmane.org>
2007-01-01 0:07 ` Ingo Oeser
[not found] ` <200701010107.18008.ioe-lkml-MFZNYGWX9eyELgA04lAiVw@public.gmane.org>
2007-01-01 8:20 ` Avi Kivity
2006-12-28 10:14 ` [PATCH 7/8] KVM: Rename some msrs Avi Kivity
2006-12-28 10:15 ` [PATCH 8/8] KVM: Fix oops on oom Avi Kivity
2006-12-28 10:33 ` [PATCH 0/8] KVM updates for 2.6.20-rc2 Ingo Molnar
[not found] ` <20061228103345.GA4708-X9Un+BFzKDI@public.gmane.org>
2006-12-28 11:04 ` Avi Kivity
[not found] ` <4593A4B7.2070404-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 11:23 ` Ingo Molnar
[not found] ` <20061228112356.GA14386-X9Un+BFzKDI@public.gmane.org>
2006-12-28 12:21 ` Avi Kivity
2006-12-28 13:15 ` Ingo Molnar
2006-12-28 11:30 ` Ingo Molnar
[not found] ` <20061228113038.GA16190-X9Un+BFzKDI@public.gmane.org>
2006-12-28 12:32 ` Avi Kivity [this message]
[not found] ` <4593B948.5090009-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 13:37 ` Ingo Molnar
[not found] ` <20061228133746.GC3392-X9Un+BFzKDI@public.gmane.org>
2006-12-28 13:49 ` Avi Kivity
[not found] ` <4593CB61.5050709-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 13:50 ` Ingo Molnar
[not found] ` <20061228135020.GA7606-X9Un+BFzKDI@public.gmane.org>
2006-12-28 13:58 ` Avi Kivity
[not found] ` <4593CD74.6060202-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 14:07 ` Ingo Molnar
[not found] ` <20061228140742.GA10033-X9Un+BFzKDI@public.gmane.org>
2006-12-28 14:18 ` Avi Kivity
[not found] ` <4593D243.1030301-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 15:01 ` Ingo Molnar
[not found] ` <20061228150104.GB16057-X9Un+BFzKDI@public.gmane.org>
2006-12-28 15:09 ` Avi Kivity
[not found] ` <4593DE1D.8010701-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 15:11 ` Ingo Molnar
[not found] ` <20061228151159.GA20279-X9Un+BFzKDI@public.gmane.org>
2006-12-28 15:25 ` Avi Kivity
[not found] ` <4593E1E3.2020800-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-12-28 15:28 ` Avi Kivity
2006-12-28 12:42 ` [patch] kvm: fix GFP_KERNEL allocation in atomic section in kvm_dev_ioctl_create_vcpu() Ingo Molnar
2006-12-28 12:56 ` Avi Kivity
2006-12-28 12:55 ` Ingo Molnar
[not found] ` <20061228125544.GA31207-X9Un+BFzKDI@public.gmane.org>
2006-12-28 13:08 ` [patch, try#2] " Ingo Molnar
2006-12-28 13:14 ` Avi Kivity
2006-12-28 13:23 ` Ingo Molnar
2006-12-28 13:30 ` Avi Kivity
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=4593B948.5090009@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=mingo-X9Un+BFzKDI@public.gmane.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