这种思路显然是错的。
缓存命中率再高,也没有多余的资源来跑线程。
举个例子,超线程提升算 30% 吧,很理想的情况了。原本只有一个线程时,这个线程按 100% 的效率运行。调度新线程进入同一物理核心后,两个线程变成只有原来 130% / 2 = 65% 的效率。这明显不对。
最优的方案是调度到另外的物理核心。先把 CPU 里面所有的物理核心吃满,再来吃超线程核心。就算命中率再差,两个线程也能达到接近 100% 的效率。
【 在 kettle 的大作中提到: 】
: 超线程任务调度需要考虑缓存命中率,所以会尽量把同进程的不同线程放到同一个核上去跑,结果就是你说的这个情况
: 发自「今日水木 on iPhone 8 Plus」
--
FROM 47.243.39.*