[4/4] vis: Use nproc to get number of available processors

Message ID 1277295179-30503-4-git-send-email-sven.eckelmann@gmx.de
State Rejected, archived

Commit Message

Sven Eckelmann June 23, 2010, 12:12 p.m. UTC
  The current way of getting the number of cpus uses different assumptions which
may or may not be true in the future:
 * /proc/cpuinfo exists
 * cpuinfo provides a list of all processing units
 * all processing units are available for the current process and its childs
 * the word 'processor' is only used in the cpu index and 'model name' lines
 * cpu index is strict monotonic increasing
 * lowest cpu index is 0 and highest cpu index is n-1 (n is the number of
    processing units)

At least the number of available processing units for the current process can
be shown to be wrong. on current systems by assigning a singe cpu to a process
and its childs:

$ numactl --physcpubind=0 nproc

$ numactl --physcpubind=0 sh -c 'NUM_CPUS=`cat /proc/cpuinfo | grep -v "model name" | grep processor | tail -1 | awk -F" " '\''{print $$3}'\''`;echo `expr $NUM_CPUS + 1`'

nproc is part of coreutils since version 8.1. On systems without nproc it will
just assume that a single processing unit is available.

Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
 vis/Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)


diff --git a/vis/Makefile b/vis/Makefile
index 675dcd8..a119758 100644
--- a/vis/Makefile
+++ b/vis/Makefile
@@ -49,7 +49,7 @@  REVISION_VERSION=\"\ rv$(REVISION)\"
 VIS_VERSION=	$(shell grep "^\#define SOURCE_VERSION " $(SOURCE_VERSION_HEADER) | sed -e '1p' -n | awk -F '"' '{print $$2}' | awk '{print $$1}')
-NUM_CPUS = $(shell NUM_CPUS=`cat /proc/cpuinfo | grep -v 'model name' | grep processor | tail -1 | awk -F' ' '{print $$3}'`;echo `expr $$NUM_CPUS + 1`)
+NUM_CPUS = $(shell nproc 2> /dev/null || echo 1)