Ask HN: Why are modern Intel CPUs not getting a lot more cores?
1) Nobody writes multi-threaded code<p>For user applications multi-threading is overkill. It&#x27;s hard to write, and there are very little benefits the average user will see. Good concurrency isn&#x27;t even that important on servers. You can trash your cache and interrupt tables but you&#x27;ll still handle 10million clients per node so nobody cares. Great concurrency is really only practiced in HFT and HPC.<p>2) Modern hardware&#x2F;OS&#x27;s suck at multithreading:<p>IO interrupts are normally handled on 1 core. While you process data on any core. This causes some non-trivial caching issues. Furthermore putting 2 10GBE nic&#x27;s on the same core can prevent you from actually using all 20GBE of bandwidth you have because the processor literally isn&#x27;t fast enough. Then you need to set affinity for epoll thread, etc. etc.<p>3) Amdahl&#x27;s Law: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Amdahl's_law" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Amdahl's_law</a><p>Every time you double the number of execution units, even if your calculation gets twice as fast, the improvement factor constantly decreases. Take for example a 60 second calculation that can be fully parallelized<p><pre><code>       1 units: 60sec
       2 units: 30sec
       4 units: 15sec
       8 units: 7.5s
       16 unit: 3.75s 
       32 unit: 1.87s
</code></pre>
The transitions between 8-16-32 really show you the effect coming into play. Yes the calculation is being done faster. But the overall change from 8 to 32 units saves you ~5.63seconds, while using 4x the resources.