WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Make dom0_enforce_cpus() use vcpu_hotplug rather than di

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Make dom0_enforce_cpus() use vcpu_hotplug rather than directly modifying the sysfs entries.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 16 Sep 2005 23:56:11 +0000
Delivery-date: Fri, 16 Sep 2005 23:54:40 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID 8cba45a77249ee2da7f694b2467fb66392a6e4b1
# Parent  a4cf3e17bb25e03a02f1c2e0a90c73402d5c2af8
Make dom0_enforce_cpus() use vcpu_hotplug rather than directly modifying the 
sysfs entries.
Directly modifying the sysfs entries causes the xenstore state of
a cpu's availability to be incorrect.  Also slightly modify the
dom0-cpus description in the xend-config.  Rather than specifying which
dom0 vcpus are to be used, it is now a target of how many vcpus to use
as pinvcpu ops are the preferred method for setting which physical cpu a
vcpu uses.
Signed-off-by: Ryan Harper <ryanh@xxxxxxxxxx>
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>

diff -r a4cf3e17bb25 -r 8cba45a77249 tools/examples/xend-config.sxp
--- a/tools/examples/xend-config.sxp    Fri Sep 16 18:59:59 2005
+++ b/tools/examples/xend-config.sxp    Fri Sep 16 19:08:36 2005
@@ -49,6 +49,6 @@
 # If dom0-min-mem=0, dom0 will never balloon out.
 (dom0-min-mem 0)
 
-# In SMP system, dom0 will use only CPUs in range [1,dom0-cpus]
+# In SMP system, dom0 will use dom0-cpus # of CPUS
 # If dom0-cpus = 0, dom0 will take all cpus available
 (dom0-cpus 0)
diff -r a4cf3e17bb25 -r 8cba45a77249 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Fri Sep 16 18:59:59 2005
+++ b/tools/python/xen/xend/XendDomain.py       Fri Sep 16 19:08:36 2005
@@ -155,6 +155,7 @@
         if not dom0:
             dom0 = self.domain_unknown(0)
         dom0.dom0_init_store()    
+        dom0.dom0_enforce_cpus()
 
     def close(self):
         pass
diff -r a4cf3e17bb25 -r 8cba45a77249 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Fri Sep 16 18:59:59 2005
+++ b/tools/python/xen/xend/XendDomainInfo.py   Fri Sep 16 19:08:36 2005
@@ -1120,6 +1120,26 @@
             # get run-time value of vcpus and update store
             self.configure_vcpus(dom_get(self.domid)['vcpus'])
 
+    def dom0_enforce_cpus(self):
+        dom = 0
+        # get max number of cpus to use for dom0 from config
+        from xen.xend import XendRoot
+        xroot = XendRoot.instance()
+        target = int(xroot.get_dom0_cpus())
+        log.debug("number of cpus to use is %d" % (target))
+   
+        # target = 0 means use all processors
+        if target > 0:
+            # count the number of online vcpus (cpu values in v2c map >= 0)
+            vcpu_to_cpu = dom_get(dom)['vcpu_to_cpu']
+            vcpus_online = len(filter(lambda x: x >= 0, vcpu_to_cpu))
+            log.debug("found %d vcpus online" % (vcpus_online))
+
+            # disable any extra vcpus that are online over the requested target
+            for vcpu in range(target, vcpus_online):
+                log.info("enforcement is disabling DOM%d VCPU%d" % (dom, vcpu))
+                self.vcpu_hotplug(vcpu, 0)
+
 
 def vm_field_ignore(_, _1, _2, _3):
     """Dummy config field handler used for fields with built-in handling.
diff -r a4cf3e17bb25 -r 8cba45a77249 tools/python/xen/xend/server/SrvDaemon.py
--- a/tools/python/xen/xend/server/SrvDaemon.py Fri Sep 16 18:59:59 2005
+++ b/tools/python/xen/xend/server/SrvDaemon.py Fri Sep 16 19:08:36 2005
@@ -298,7 +298,6 @@
         return self.cleanup(kill=True)
 
     def run(self, status):
-        _enforce_dom0_cpus()
         try:
             log.info("Xend Daemon started")
             event.listenEvent(self)
@@ -323,32 +322,6 @@
         #sys.exit(rc)
         os._exit(rc)
 
-def _enforce_dom0_cpus():
-    dn = xroot.get_dom0_cpus()
-
-    for d in glob.glob("/sys/devices/system/cpu/cpu*"):
-        cpu = int(os.path.basename(d)[3:])
-        if (dn == 0) or (cpu < dn):
-            v = "1"
-        else:
-            v = "0"
-        try:
-            f = open("%s/online" %d, "r+")
-            c = f.read(1)
-            if (c != v):
-                if v == "0":
-                    log.info("dom0 is trying to give back cpu %d", cpu)
-                else:
-                    log.info("dom0 is trying to take cpu %d", cpu)
-                f.seek(0)
-                f.write(v)
-                f.close()
-                log.info("dom0 successfully enforced cpu %d", cpu)
-            else:
-                f.close()
-        except:
-            pass
-
 def instance():
     global inst
     try:

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Make dom0_enforce_cpus() use vcpu_hotplug rather than directly modifying the sysfs entries., Xen patchbot -unstable <=