Only to catch up the Linux and Core topic (and the assumption about efficient system usage):
Looking at the WiiU, you don't have a "symmetric core approach" (if the specification is correct).
Maybe the WiiU provides symmetric processing but the architecture concerning the cache is asymmetric (which is relevant for the kernel and the scheduler).
Linux should assign threads to a core based on the load of that core.
A thread which is ready to run will be assigned to the core with lowest load.
However you can change the approach by setting the thread affinity.
Nowadays the scheduling approach in Linux is mostly NPTL, which schedules threads at the same level as processes.
However the Linux kernel doesn't always migrate tasks from busy to idle cores automatically.
Means you have to align tasks to idle cores in order to use the system in an efficient way.
Due to the asymmetric architecture of the WiiU concerning the cache. You have to think about shifting tasks/processes from Core0 or Core 2 to Core 1 to get better performance.
Especially SMPs are using "CPU hopping" which means processes or threads are changing the cores.
If you think about using only Core0 and Core2 for the OS, then you don't have to think about shifting tasks or processes from one core to another (-> symmetric approach).
However if you want to use all 3 cores in an efficient way, you have to align the task and process management to use every core and the available resources in an effective way.
You can use the standard SMP approach for the WiiU but you will potentially lose performance.
That's it from my side
Looking at the WiiU, you don't have a "symmetric core approach" (if the specification is correct).
Maybe the WiiU provides symmetric processing but the architecture concerning the cache is asymmetric (which is relevant for the kernel and the scheduler).
- Broadway based core architecture
- Three cores at 1.243125 GHz
- Symmetric multiprocessing with MESI/MERSI support
- Each core can output up to 3 instructions per clock using superscalar parallelism
- 32-bit integer unit
- 64-bit floating-point (or 2 × 32-bit SIMD, often found under the denomination "paired singles")
- A Total of 3 MB of Level 2 cache in an unusual configuration.
- Core 0: 512 KB, core 1: 2 MB, core 2: 512 KB
Linux should assign threads to a core based on the load of that core.
A thread which is ready to run will be assigned to the core with lowest load.
However you can change the approach by setting the thread affinity.
Nowadays the scheduling approach in Linux is mostly NPTL, which schedules threads at the same level as processes.
However the Linux kernel doesn't always migrate tasks from busy to idle cores automatically.
Means you have to align tasks to idle cores in order to use the system in an efficient way.
Due to the asymmetric architecture of the WiiU concerning the cache. You have to think about shifting tasks/processes from Core0 or Core 2 to Core 1 to get better performance.
Especially SMPs are using "CPU hopping" which means processes or threads are changing the cores.
If you think about using only Core0 and Core2 for the OS, then you don't have to think about shifting tasks or processes from one core to another (-> symmetric approach).
However if you want to use all 3 cores in an efficient way, you have to align the task and process management to use every core and the available resources in an effective way.
You can use the standard SMP approach for the WiiU but you will potentially lose performance.
That's it from my side











