Wireshark-dev: Re: [Wireshark-dev] [Wireshark-commits] rev 49995: /trunk/ /trunk/: macosx-setup
From: Dirk Jagdmann <[email protected]>
Date: Tue, 18 Jun 2013 12:01:06 -0700
How many processor cores does your machine have, and are they multi-threaded?

I have a 4-dual-threaded-core machine (and a solid-state disk and a lot of memory), and "-j 8" seems to run the CPU at about 100%.  I don't know whether "number of threads" would be a good default in all cases - what you really want is to keep cranking up the number of jobs until things don't get faster, but that's a pain - but, if it is a good default, then

	sysctl -n hw.logicalcpu

would give cores*threads-per-core (tested on Snow Leopard, Lion, and Mountain Lion; the script doesn't work on Leopard, as the versions of at least some of the software won't configure and build, and I gave up trying to make them build).

(I originally used -j 4, but then saw something about a multi-threaded version of the IBM System/360 Model 195 that noted that multi-threading can help deal with pipeline bubbles due to unpredicted or mispredicted branches, so I tried -j 8 and found the CPU was busier than with -j 4.)
hmm, there are many points discussed here:

- do we want to make a smart decision on the number of parallel make jobs, possibly derived from the number of cores?
My personal opinion is yes. On OsX using the sysctl mentioned by Guy is 
probably a good starting point. Adding my own experience you'll want to 
oversubscribe the number of jobs over the number of cores a little bit, 
so that when jobs are waiting for I/O action another job can use the 
free CPU. With my personal experience calculating something like "number 
of cores"*1.5 seems reasonable, because if you're waiting for the long 
lasting build job on your desktop computer, you want some "juice" left 
over for web browsing, email reading or whatever. (This applies to all 
modern operating system, Windows, Linux, OsX)
- the other question is, which versions of OsX are we targetting for 
developer support going forward. Personally I think no serious Wireshark 
user will use an earlier version of OsX than 10.6, so we should be safe.
(personal note, my old MacBook Pro has two cores and no hyper-thread, so 
personally I'm fine with 3 make jobs [note that this was the default in 
the OsX build script for a long time])
---> Dirk Jagdmann
----> http://cubic.org/~doj
-----> http://llg.cubic.org