Thanks for your reply, but I think that SIGAR is wrong. Let me explain....
Also when I said '3' it was a slip of the finger. I meant '4'. For each of the 4 CPUs SIGAR does indeed say there are 4 virtual CPUs, making 16 virtual CPUs in all. But this figure is wrong. The Intel Xeon E5440 does not have any hyper-threading capability, despite the Intel spec saying that it does. The spec is wrong. The lack of hyperthreading is confirmed via several other facts:
1. There is no way to enable it in the BIOS and the BOIS screen says there is no hyperthreading
2. The coreinfo command of psools (aka sysInternals) shows no hyperthreading.
3. The unuspported WIN32 functions for calculating the number of hyperthreads returns 4, i.e the same as the number of physical CPUs.
So I reckon that 4 is correct and is 16 is wrong.I think SIGAR needs to call GetLogicalProcessorInformation on WIN32 and count the number of set bits in the processor mask for each physical CPU.