base_utils: fix count_cpus to use multiprocess.cpu_count() So in base_utils.count_cpu, try to use multiprocess.cpu_count() first. If it is not availabe, then try to match line like processor :0 in /proc/cpuinfo to find cpu number. At last, return at least one. BUG=chrome-os-partner:9582 TEST=try hardware_SAT test on dut, will see -m parameter with correct cpu number Change-Id: I1652eca0ba63cf650caa3ca79c07888d5c8920bb Reviewed-on: https://gerrit.chromium.org/gerrit/34494 Commit-Ready: Cheng-Yi Chiang <[email protected]> Reviewed-by: Cheng-Yi Chiang <[email protected]> Tested-by: Cheng-Yi Chiang <[email protected]>
diff --git a/client/bin/base_utils.py b/client/bin/base_utils.py index 5d72566..620d655 100644 --- a/client/bin/base_utils.py +++ b/client/bin/base_utils.py
@@ -8,7 +8,7 @@ precedence order defined there """ import os, shutil, sys, signal, commands, pickle, glob, statvfs -import math, re, string, fnmatch, logging +import math, re, string, fnmatch, logging, multiprocessing from autotest_lib.client.common_lib import error, utils, magic @@ -326,12 +326,20 @@ def count_cpus(): """number of CPUs in the local machine according to /proc/cpuinfo""" + try: + return multiprocessing.cpu_count() + except Exception as e: + logging.exception('can not get cpu count from' + ' multiprocessing.cpu_count()') + f = file('/proc/cpuinfo', 'r') cpus = 0 for line in f.readlines(): - if line.lower().startswith('processor'): + # Matches lines like "processor : 0" + if re.search(r'^processor\s*:\s*[0-9]+$', line): cpus += 1 - return cpus + # Returns at least one cpu. Check comment #1 in crosbug.com/p/9582. + return cpus if cpus > 0 else 1 # Returns total memory in kb