Chances are it already runs at least two, most probably four. It's not unreasonable to see 4 and 8-threads as the norm. Also keep in mind we are only considering x86s. SPARCs, IIRC, can do up to 64 on a single socket. ARM-based servers should follow a similar path.
BTW, a fully-comfigured MacPro does 12. A single-socket i7 machine can do 12. I never saw a dual-socket i7, but I have no reason to believe it's impossible.
Considering that, -j64 seems quite reasonable.
There are dual-socket and even quad-socket 8-core hyperthreaded xeons (the Xeon L75xx series). A 1U Intel with 64 threads will set you back about $20k.
AMD has 12-core chips, so you can get 48 cores in 4 sockets there. (But I think they only have one thread per core)
Personally, I would spend a part of the money on 2048x2048 square LCD screens. They look really cool.
The kernel can multi-task processes, but each process still gets exclusive use of the CPU when it runs. So if it doesn't need an adder, that adder sits idle.
With hyperthreading you can run two processes at once and the CPU merges them at the instruction level making maximum use of the components on the CPU.
If you think that one extra concurrent job is enough to fill CPU utilization in the time that other jobs are blocking on iowait, then you are fine.
So, bottom line, factors to think about:
- your i/o throughput for writing the generated object files;
- the complexity of the code being compiled, - template-rich C++ code has a lot higher CPU usage versus i/o ratio
- the amount of cores in your system
Additionally, HT affects benchmark reproducibility which is already bad enough on multicore x86 with NUMA, virtual memory, and funky networks. (Compare to Blue Gene which is also multicore, but uses no TLB (virtual addresses are offset-mapped to physical addresses), has almost independent memory bandwidth per core, and a better network.)
Yes. Dunno about HT, never used a box with it.