public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
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

  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