Fix some python3, cleanup cpu allocation 15/18715/3
authorjdenisco <jdenisco@cisco.com>
Fri, 5 Apr 2019 16:25:50 +0000 (12:25 -0400)
committerjdenisco <jdenisco@cisco.com>
Tue, 9 Apr 2019 16:55:20 +0000 (12:55 -0400)
Change-Id: I97cecc964f341720d8c4894656637082db5886d7
Signed-off-by: jdenisco <jdenisco@cisco.com>
extras/vpp_config/setup.py
extras/vpp_config/vpp_config.py
extras/vpp_config/vpplib/AutoConfig.py

index c8d12ef..f04669f 100644 (file)
@@ -1,7 +1,7 @@
 from setuptools import setup
 
 setup(name="vpp_config",
-      version="19.01.3",
+      version="19.01.4",
       author="John DeNisco",
       author_email="jdenisco@cisco.com",
       description="VPP Configuration Utility",
index 1f79201..0ff40f1 100755 (executable)
@@ -341,12 +341,6 @@ def autoconfig_dryrun(ask_questions=True):
 
     """
 
-    vutil = VPPUtil()
-    pkgs = vutil.get_installed_vpp_pkgs()
-    if len(pkgs) == 0:
-        print ("\nVPP is not installed, please install VPP.")
-        return
-
     acfg = AutoConfig(rootdir, VPP_AUTO_CONFIGURATION_FILE, clean=True)
 
     # Stop VPP on each node
@@ -371,6 +365,13 @@ def autoconfig_dryrun(ask_questions=True):
     else:
         acfg.update_interfaces_config()
 
+    # If there are no interfaces, just return
+    for i in nodes.items():
+        node = i[1]
+        if not acfg.has_interfaces(node):
+            print("\nThere are no VPP interfaces configured, please configure at least 1.")
+            return
+
     # Modify CPU
     acfg.modify_cpu(ask_questions)
 
index da00b28..6fd6eee 100644 (file)
@@ -572,7 +572,7 @@ class AutoConfig(object):
             #  then we shouldn't get workers
             total_workers_node = 0
             if len(ports_per_numa):
-                total_workers_node = total_vpp_cpus / len(ports_per_numa)
+                total_workers_node = total_vpp_cpus // len(ports_per_numa)
             total_main = 0
             if reserve_vpp_main_core:
                 total_main = 1
@@ -953,7 +953,9 @@ class AutoConfig(object):
         print("Then to improve performance start reserving cores and "
               "adding queues as needed.")
 
-        max_vpp_cpus = 4
+        # Leave 1 for the general system
+        total_cpus -= 1
+        max_vpp_cpus = min(total_cpus, 4)
         total_vpp_cpus = 0
         if max_vpp_cpus > 0:
             question = "\nHow many core(s) shall we reserve for " \
@@ -961,15 +963,16 @@ class AutoConfig(object):
             total_vpp_cpus = self._ask_user_range(question, 0, max_vpp_cpus, 0)
             node['cpu']['total_vpp_cpus'] = total_vpp_cpus
 
-        max_other_cores = (total_cpus - total_vpp_cpus) / 2
-        question = 'How many core(s) do you want to reserve for ' \
-                   'processes other than VPP? [0-{}][0]? '. \
-            format(str(max_other_cores))
-        total_other_cpus = self._ask_user_range(
-            question, 0, max_other_cores, 0)
-        node['cpu']['total_other_cpus'] = total_other_cpus
+        total_other_cpus = 0
+        max_other_cores = total_cpus - total_vpp_cpus
+        if max_other_cores > 0:
+            question = 'How many core(s) do you want to reserve for ' \
+                       'processes other than VPP? [0-{}][0]? '. \
+                       format(str(max_other_cores))
+            total_other_cpus = self._ask_user_range(question, 0, max_other_cores, 0)
+            node['cpu']['total_other_cpus'] = total_other_cpus
 
-        max_main_cpus = max_vpp_cpus + 1 - total_vpp_cpus
+        max_main_cpus = total_cpus - total_vpp_cpus - total_other_cpus
         reserve_vpp_main_core = False
         if max_main_cpus > 0:
             question = "Should we reserve 1 core for the VPP Main thread? "
@@ -1034,7 +1037,7 @@ class AutoConfig(object):
             node['cpu']['cpus_per_node'] = cpus_per_node
 
             # Ask the user some questions
-            if ask_questions and total_cpus >= 8:
+            if ask_questions and total_cpus >= 4:
                 self._modify_cpu_questions(node, total_cpus, numa_nodes)
 
             # Populate the interfaces with the numa node
@@ -1484,6 +1487,18 @@ class AutoConfig(object):
         hpg = VppHugePageUtil(node)
         hpg.show_huge_pages()
 
+    @staticmethod
+    def has_interfaces(node):
+        """
+        Check for interfaces, return tru if there is at least one
+
+        :returns: boolean
+        """
+        if 'interfaces' in node and len(node['interfaces']):
+            return True
+        else:
+            return False
+
     @staticmethod
     def min_system_resources(node):
         """
@@ -1491,7 +1506,6 @@ class AutoConfig(object):
         there is enough.
 
         :returns: boolean
-        :rtype: dict
         """
 
         min_sys_res = True