On Thursday, 4 June 2015 at 22:28:52 UTC, Jonathan M Davis wrote:
anyone give a reason why we need to. deadalnix talked about
load balancing that way, but you gave good reasons as to why
that didn't make sense,
What good reasons?
By the time you get response from your shared memcache or
database the x86 cache level 1 and possibly 2 is cold. And cache
level 3 is shared, so there is no cache penalty for switching
cores. Add to this that two-and-two cores share primary caches so
if you don't pair tasks that address the same memory you loose up
to 10-20% performance in addition to unused capacity and
increased latency. Smart scheduling matters, both at the OS level
and at the application level. That's not a controversial
statement (only in these forums…)!
The only good reason for not switching is that you lack
resources/know-how. But then you probably should not make it a
language feature in the first place...?
There is no reason to pretend that synthetic performance
benchmarks don't carry weight when people pick a language for
production. That's just wishful thinking.