[1/4] batman-adv: Use nproc to get number of available processors

Message ID 1277295179-30503-1-git-send-email-sven.eckelmann@gmx.de (mailing list archive)
State Accepted, archived
Headers

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
1

$ 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`'
4

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>
---
 batman-adv/Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
  

Comments

Marek Lindner June 24, 2010, 3:09 p.m. UTC | #1
On Wednesday 23 June 2010 14:12:56 Sven Eckelmann wrote:
> nproc is part of coreutils since version 8.1. On systems without nproc it
> will just assume that a single processing unit is available.

Ok, I applied the batman-adv and batctl patch in revision 1719 & 1720.
However, the other patches I'd rather not commit because these branches are 
unmaintained. As soon as a maintainer shows up they can go in.

Cheers,
Marek
  

Patch

diff --git a/batman-adv/Makefile b/batman-adv/Makefile
index 4f6a460..adfbbc9 100644
--- a/batman-adv/Makefile
+++ b/batman-adv/Makefile
@@ -41,7 +41,7 @@  REVISION=	$(shell if [ -d .svn ]; then \
 						fi; \
 					fi)
 
-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)
 
 include $(PWD)/Makefile.kbuild