From patchwork Fri Jan 6 09:02:33 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [bitbake-devel, 15/16] command.py: add new command to get the CPU info Date: Fri, 06 Jan 2012 09:02:33 -0000 From: Dongxiao Xu X-Patchwork-Id: 18627 Message-Id: <2ce89adf04f57d34f90b5dcc4d14aa6eaa903121.1325840050.git.dongxiao.xu@intel.com> To: bitbake-devel@lists.openembedded.org 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 --- 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 +# +# 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 141b51e..ba7c753 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 @@ -170,6 +171,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: """