The issue with per-core runqueues is that at some point, at least one runqueue will not have any runnable threads, while another has more then one. It's not an optimal design, but an easier one to implement that works "good enough" for most common tasks. For something like gaming though, it's woefully inadequate, as I've been complaining about here for several years now.
At the end of a day, if you have a runable thread, and you have an idle CPU core, there is ZERO reason to sit around doing nothing. Now yes, internal CPU headaches can be a pain here (per-core L1/L2 caches especially), but if you have a high priority thread waiting to run and a CPU core on which to run it, the benefits of doing so almost always outweigh the negatives.
At the end of a day, if you have a runable thread, and you have an idle CPU core, there is ZERO reason to sit around doing nothing. Now yes, internal CPU headaches can be a pain here (per-core L1/L2 caches especially), but if you have a high priority thread waiting to run and a CPU core on which to run it, the benefits of doing so almost always outweigh the negatives.
Comment