Does Linux SMP perform at its optimum in Intel Core i7?
This is a general technical question about Symmetric Multiprocessing in relation to the Intel Core i7. (Actually, it's more about Hyperthreading than i7.)
My understanding is that Symmetric Multiprocessing means that the operating system treats all processors as identical, and therefore it can assign a new thread to any free processor.
And that i7 appears to the OS as 8 processors, 0 thru 7.
But from a performance perspective, the 8 processors are not identical, because each core has 1 execution engine plus the ability to store the state of 2 threads. This is, as far as I understand it, the essence of Intel's Hyperthreading. So the execution engine can quickly switch between 2 threads, but only one at a time actually executes.
If, for example, there is one thread assigned to processor 0, and the OS then assigns a second thread to processor 1, the result is that both threads are competing for the same execution engine, while the other 3 cores are idle.
Is my understanding correct?
If so, does linux SMP take full advantage of Intel Hyperthreading (which existed also in an earlier Intel processor)? That is, does linux SMP assign threads in such a way that it attempts to choose an idle execution engine?
How about Windows? How does it handle the situation?