[bitbake-devel] [PATCH 7/8] command.py: add new command to get the CPU info

Dongxiao Xu dongxiao.xu at intel.com
Wed Jan 11 03:03:26 UTC 2012


Add new API in command.py to get the CPU core and threads information
in order to set the appropriate BB_NUMBER_THREADS and PARALLEL_MAKE
variables.

Signed-off-by: Shane Wang <shane.wang at intel.com>
---
 bitbake/lib/bb/helper.py |   39 +++++++++++++++++++++++++++++++++++++++
 lib/bb/command.py        |   12 ++++++++++++
 2 files changed, 51 insertions(+), 0 deletions(-)
 create mode 100644 bitbake/lib/bb/helper.py

diff --git a/bitbake/lib/bb/helper.py b/bitbake/lib/bb/helper.py
new file mode 100644
index 0000000..291158b
--- /dev/null
+++ b/bitbake/lib/bb/helper.py
@@ -0,0 +1,39 @@
+#
+# Helper for BitBake Graphical GTK User Interface
+#
+# Copyright (C) 2011        Intel Corporation
+#
+# Authored by Shane Wang <shane.wang at intel.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import os
+
+class CpuInfo(object):
+
+    coefficient = 4
+
+    @classmethod
+    def getNumOfCpus(cls):
+        pfile = os.popen('cat /proc/cpuinfo | grep cpu\ cores')
+        num = len(pfile.readlines())
+        return num
+
+    @classmethod
+    def getNumOfCpuCores(cls):
+        pfile = os.popen('cat /proc/cpuinfo | grep cpu\ cores | cut -d: -f2')
+        contents = pfile.readlines()
+        num = int(contents[0])
+        return num
+
diff --git a/lib/bb/command.py b/lib/bb/command.py
index 05555c5..eaf8236 100644
--- a/lib/bb/command.py
+++ b/lib/bb/command.py
@@ -30,6 +30,7 @@ Commands are queued in a CommandQueue
 
 import bb.event
 import bb.cooker
+import bb.helper
 
 class CommandCompleted(bb.event.Event):
     pass
@@ -173,6 +174,17 @@ class CommandsSync:
         """
         command.cooker.reset()
 
+    def getDefaultNumOfThreads(self, command, params):
+        """
+        Get the default number of threads on the server = number of CPUs
+        """
+        return bb.helper.CpuInfo.getNumOfCpus()
+
+    def getMaxNumOfThreads(self, command, params):
+        """
+        Get the max number of threads that the server can tolerate
+        """
+        return bb.helper.CpuInfo.getNumOfCpus() * bb.helper.CpuInfo.coefficient
 
 class CommandsAsync:
     """
-- 
1.7.0.4





More information about the bitbake-devel mailing list