哪些内核对应于下面的每个“ CPU”?
假设我们有核心1、2、3和4,CPU4和CPU5代表核心3。
下面的CPU 6和CPU 7是否代表一个内核;HT和真正的核心?
两者之间没有区别-它们都具有与CPU的物理硬件接口,逻辑接口是在硬件中实现的(有关更多详细信息,请参阅《英特尔核心处理器数据表,第1卷》)。基本上,每个内核都有两个单独的执行单元,但是它们在它们之间共享一些公共资源。这就是为什么在某些情况下超线程实际上会降低性能的原因。
例如,如果CPU 6代表真实内核,而CPU 7代表HT内核,那么仅分配给CPU7的线程将仅获得真实内核的剩余资源吗?(假设核心正在运行其他任务)
往上看。分配给仅CPU6或仅CPU7的线程将以完全相同的速度执行(假定该线程执行相同的工作,并且处理器中的其他内核处于空闲状态)。Windows了解启用HT的处理器,并且进程调度程序将这些因素考虑在内。
超线程是否完全在处理器内部管理,以便内部处理线程?如果是这样,那是在CPU范围还是在核心范围?示例:如果CPU 6和7代表一个内核,那么分配给哪个进程没有关系,因为CPU会为正在运行的线程分配适当的资源?
都。实际的硬件本身并没有计划在哪个内核上运行程序,这是操作系统的工作。但是,CPU本身负责在实际执行单元之间共享资源,并且Intel规定了如何编写代码以使其尽可能高效。
我注意到,至少根据任务管理器的说法,长时间运行的单线程进程会在内核周围反弹很多。这是否意味着将进程分配给单个内核会稍微提高性能(避免上下文切换和缓存无效等)?如果是这样,我能知道我没有分配给“只是一个虚拟核心”吗?
这是正常的行为,不,将其分配给单个内核不会提高性能。就是说,如果出于某种原因要确保仅在单个物理核心上执行单个进程,请将其分配给任何单个逻辑处理器。
流程“反弹”的原因是由于流程计划程序。这是正常的行为,并且由于进程调度程序现在必须更加努力地使所有事情都在您施加的限制下工作,因此您很可能会通过限制进程可以在哪些内核上执行(无论进程具有多少线程)来降低性能。是的,这种惩罚在大多数情况下可以忽略不计,但底线是除非您有理由这样做,否则不要!