From: Avi Kivity <avi@qumranet.com>
To: Shaohua Li <shaohua.li@intel.com>
Cc: kvm-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org,
lhcs-devel@lists.sourceforge.net
Subject: Re: [PATCH 0/7] KVM: Suspend and cpu hotplug fixes
Date: Fri, 25 May 2007 11:28:19 +0300 [thread overview]
Message-ID: <46569E23.6010101@qumranet.com> (raw)
In-Reply-To: <1180055432.9919.3.camel@sli10-conroe.sh.intel.com>
Shaohua Li wrote:
> On Thu, 2007-05-24 at 20:10 +0800, Avi Kivity wrote:
>
>> The following patchset makes kvm more robust wrt cpu hotunplug, and
>> makes suspend-to-ram actually work. Suspend-to-disk benefits from
>> the cpu hotunplug improvements as well.
>>
>> The major issue is that KVM wants to disable the virtualization
>> extensions at a point in time when no user processes are schedulable
>> on the victim cpu. No current notifier exists, so a new one,
>> CPU_DYING,
>> is added for the purpose.
>>
>> Should there be no objections, I will submit this patchset for
>> inclusion
>> in 2.6.22, and backport it to 2.6.21.stable.
>>
> Is it possible disabling kvm can be done at the begining of play_dead?
> take_cpu_done is designed to run fast.
>
>
It's possible, but I have issues with play_dead():
- it is arch specific, so we need to modify i386, x86_64, and ia64 (when
we have an ia64 kvm port)
- there is no hook available here to call modules like the hotplug notifier
I estimate that that take_cpu_down will run for about a millisecond if
there are a few hundred vcpus which have last run on the dying cpu (and
that's an extreme case, which is not expected in normal operation). If
that's too much, it can be reduced as follows:
- add a per-cpu list of vcpus that have last run on a cpu, maintained at
runtime
- on CPU_DOWN_PREPARE, walk the list and vmclear any vcpus that last ran
on the dying cpu
- on CPU_DYING (take_cpu_down), walk the list again an vmclear any vcpus
that managed to get scheduled to the dying vcpu again. the list should
not have more than 1-2 entries in normal operation.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
next prev parent reply other threads:[~2007-05-25 8:28 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-24 12:10 [PATCH 0/7] KVM: Suspend and cpu hotplug fixes Avi Kivity
2007-05-24 12:10 ` [PATCH 1/7] HOTPLUG: Add CPU_DYING notifier Avi Kivity
2007-05-24 12:10 ` [PATCH 2/7] HOTPLUG: Adapt cpuset hotplug callback to CPU_DYING Avi Kivity
2007-05-24 12:10 ` [PATCH 3/7] HOTPLUG: Adapt thermal throttle " Avi Kivity
2007-05-24 12:10 ` [PATCH 4/7] SMP: Implement on_one_cpu() Avi Kivity
2007-05-24 13:36 ` [kvm-devel] " Heiko Carstens
2007-05-24 13:42 ` Avi Kivity
2007-05-24 13:43 ` Roland Dreier
2007-05-24 13:48 ` Avi Kivity
2007-05-24 12:10 ` [PATCH 5/7] KVM: Keep track of which cpus have virtualization enabled Avi Kivity
2007-05-24 12:10 ` [PATCH 6/7] KVM: Tune hotplug/suspend IPIs Avi Kivity
2007-05-24 12:10 ` [PATCH 7/7] KVM: Use CPU_DYING for disabling virtualization Avi Kivity
2007-05-24 12:53 ` [kvm-devel] [PATCH 0/7] KVM: Suspend and cpu hotplug fixes Avi Kivity
2007-05-25 1:10 ` Shaohua Li
2007-05-25 8:28 ` Avi Kivity [this message]
2007-05-27 10:20 ` 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=46569E23.6010101@qumranet.com \
--to=avi@qumranet.com \
--cc=kvm-devel@lists.sourceforge.net \
--cc=lhcs-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=shaohua.li@intel.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