朕来说一下事实上是模拟器对单线程的榨取率太高导致的误解
win系统判断cpu使用率有个关键——系统的空闲进程,空闲进程越高则cpu使用率越低,换句话说就是什么都不做cpu使用率越低,到这里肯定不会出误解
超线程是一个核心分出来2个线程(在win系统看来就是2个核心),假设完全挤干一个线程,另一个线程则完全没有了可利用的运算单元,也就是说它也是什么都不做的,这时cpu使用率整体就变成了(100%+0%)/2=50%,这里就是标题所说的误解,事实上不会挤得这么干,拼命挤还是会大于50%的,有人可能就要疑惑了——不对啊,一个99%另一个就剩1%了才对,为什么会大于50%呢,这里是隐藏的第2个误解
实际上cpu使用率和利用率是不能划等号的,使用率是运算单元单位时间内工作情况的百分比(我们能看到的是这个),而利用率则是有多少运算单元在工作的百分比(这个是我们看不到的),因为运算单元在工作并不代表所有种类的运算单元都在工作,所以cpu使用率并不能代表利用率,cpu使用率100%也并不一定是所有的性能都发挥出来了,正是这样才需要超线程技术
一般来说对需求核心数多的程序来说开启超线程都是更好的选择,哪怕因为线程之间的调度或抢资源等等问题导致性能下降一些,但为此获得更多线程(如前面所说对win系统来说就是更多核心,虽然不是完美的)带来的各方面稳定性都是值得的,不止rpcs3!
