mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
[XEND] balloon enough memory to enable shadow mode before live migration.a
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
This commit is contained in:
1 parent
e7e0c88d8c
commit
06b8f9d3ab
2 files changed
+18
No files matched your search
@@ -420,6 +420,10 @@ class XendDomain:
|
||||
""" The following call may raise a XendError exception """
|
||||
dominfo.testMigrateDevices(True, dst)
|
||||
|
||||
if live:
|
||||
""" Make sure there's memory free for enabling shadow mode """
|
||||
dominfo.checkLiveMigrateMemory()
|
||||
|
||||
if port == 0:
|
||||
port = xroot.get_xend_relocation_port()
|
||||
try:
|
||||
|
||||
@@ -49,6 +49,7 @@ from xen.xend.xenstore.xstransact import xstransact, complete
|
||||
from xen.xend.xenstore.xsutil import GetDomainPath, IntroduceDomain
|
||||
from xen.xend.xenstore.xswatch import xswatch
|
||||
|
||||
from xen.xend import arch
|
||||
|
||||
"""Shutdown code for poweroff."""
|
||||
DOMAIN_POWEROFF = 0
|
||||
@@ -1503,6 +1504,19 @@ class XendDomainInfo:
|
||||
|
||||
## public:
|
||||
|
||||
def checkLiveMigrateMemory(self):
|
||||
""" Make sure there's enough memory to migrate this domain """
|
||||
overhead_kb = 0
|
||||
if arch.type == "x86":
|
||||
# 1MB per vcpu plus 4Kib/Mib of RAM. This is higher than
|
||||
# the minimum that Xen would allocate if no value were given.
|
||||
overhead_kb = self.info['vcpus'] * 1024 + self.info['maxmem'] * 4
|
||||
overhead_kb = ((overhead_kb + 1023) / 1024) * 1024
|
||||
# The domain might already have some shadow memory
|
||||
overhead_kb -= xc.shadow_mem_control(self.domid) * 1024
|
||||
if overhead_kb > 0:
|
||||
balloon.free(overhead_kb)
|
||||
|
||||
def testMigrateDevices(self, network, dst):
|
||||
""" Notify all device about intention of migration
|
||||
@raise: XendError for a device that cannot be migrated
|
||||
|
||||