monaco87 said:
Actually on the new 8 core chip context switching has been largely eliminated Each core is dolled out 4 threads. Then the core manages those threads locally using multiple register banks. When one threads stalls on a memory access, the core switches to the next one.
Yeah that's all very well until you have more runnable threads than the CPU can naturally handle.
monaco87 said:
No it is possible to run Windows on 8+ cpus, but the law of diminishing returns applies. Above about 8 each additional cpu scales by about 0.6 on a Unisys system. So for every £100 you might as well bin £40
Not true. Totally not true. Windows scales just as well (if not better) than an equivilent Unix OS. The law of dimishing returns (e.g. scalability) kicks in with the software you are using, not so much with the OS itself. This is a host software design problem. It's about how much concurrency you can squeeze out of your code by reducing lock times and improving synchronisation algorithms. It has little, almost nothing, to do with the OS. The only part where scalability really comes into it with the OS itself is with scheduling. There's only so much an OS can do in this regard. Most of it boils down to quantum tweaking, dynamic priority boosting and reducing locking of memory structures associated with the scheduler. Recognising multi-core, hyperthreading and NUMA systems and changing the scheduling behaviour accordingly is also of course involved - but these are trivial matters in comparison.
monaco87 said:
Wrong, on Solaris the sheduler changes behaviour dependent on the type of cpus. On systems with multi core or a mix of single and multi, it localises threads on multicore so that threads may avail of shared local caahe.
There are subtle changes on Windows too - but nothing major to speak of. Windows also tries to keep threads localised to avoid cache flushing (performance hit). This is OS Design 101. Nothing spectacular to speak of. Hyperthreading, multi-core and NUMA systems are all nicely accounted for by Windows' scheduler.
monaco87 said:
Errr.. conditional compliation means different bits get compiled... i.e. different kernels
Well yeah but its still the same code base.
monaco87 said:
I don't think so. We are nearly ten years down the line from NT 3.51 and the DELL's, HP's of this world still can't make systems over 8 cpus work well. That should tell you something.
It's not Microsoft's fault if the hardware isn't available. Windows is tied to x86 and x86 has only just recently jumping on the multi-core bandwagon. Microsoft got its hands on some 64 proc x86 hardware and as such Windows Server 2003 is validated to work on such a system.
monaco87 said:
See point above. Multi core is really no different from multi cpu. If this is the case where have all the 32/64/128 cpu Windows boxes been for the last 10 years. The first Solaris SMP kernel was 1992 by the way designed from the ground up. Has been ever since.
I didn't say multi-core was different to multiple CPUs? Where have 128 CPU x86 boxes been for the past 10 years? I don't know
Ask Intel or AMD
As I was saying - now that multi-core is kicking off in the x86 world it is going to be a big coup for Microsoft because finally the power of SMP in the Windows kernel will be unlocked for all users, even home desktop users, to see.
I think you are in for a bit a shock
monaco87 said:
This is not really a debate about Windows vs Unix. The fact is however if the Windows OS & apps were designed along the Unix lines then the users on this board could drop in the multi core and bang.. extra performance. Fact is they can't except on a select few apps. I thought about dual core myself for media work. I asked on here which apps used the two cores, I got 3 app names. Having multiple threads is not the answer when you are developing for single cpu systems. Designing for multi-threaded environments is... and those evironments are heading towards lots of cores, multiple threads per core, very short piplenes (If a pipeline stalls, who cares, just switch to the next thread while you re-fetch).
You're right it's not a debate of OSes. But I get the distinct impression you're blaming Windows for shortcomings that aren't its fault. You can't blame the software just because the hardware is rubbish in comparison to the common stuff you'd see Solaris running on
And you really need stop this sillyness about Windows not supporting SMP properly.
If you drop multi-core CPU into a Windows system then you will get a performance boost straight away - regardless of the software you're using... just look around this very forum for first hand opinions on that.
It's unfair to compare a desktop OS and its host software to a server platform such as Solaris (or any Unix really). Being a solely server platform, pretty much all its server software is designed to be multi threaded. With Windows it is the same case.. SQL Server is highly MT, as is IIS, as is MySQL - basically anything server related you can bet will be MT. Media encoders have also been MT for a long long time now, on all OSes. However despite regular desktop software being MT (see Task Manager screenshot in previous post) they are not yet concurrent enough to see big gains. As an example: Firefox may use 6 threads, but I can guarantee one of those will for the GUI, one for pulling HTTP documents, one for rendering and the rest for background worker jobs. It uses the threads to make the GUI feel smooth, it doesn't use them to get more work done in the same amount of time as such - not in the way a server program would. This by the way is basic software design methodology - it has nothing to do with the OS. Almost every Windows application will have at least 2 threads - one for its GUI and one for everything else. A lot though will make use of more threads than that (again, see Task Manager screenshot.)
Do you see now why your comparison is unfair?