Mac*_*cke 27 windows cpu performance
我只是好奇为什么调度程序会不断地在 CPU 之间移动应用程序,而不是将其保持在一个 CPU 上。有 4 个内核 25% 而不是 100% 的内核看起来有点傻。
它与热量有关,还是以某种方式更有效?其他操作系统的做法不同吗?
深入的见解或链接会很好。(我自己找不到太多。)
更新:
我所说的“散布”并不是说它一次在多个 CPU 上执行,而是每秒从一个 CPU 移到另一个 CPU 数次,从而产生看起来散开的效果。
我认为wierob已经很好地描述了这一点。
这是一篇讨论processor affinity四核QX6800设置的旧文章。
(链接指向该文章的第二页)。
如果您不强制进程关联到核心,您是否会降低性能?
L3缓存,它的 4 个内核共享。应该注意的是,虽然您可能选择在系统上只运行这个单线程进程,但操作系统本身会运行其他几个也需要调度的任务。调度程序在可用的处理器池(或内核)之间平衡所有这些活动。
展望未来,借助Nehalem架构和NUMA,
跨多个套接字的处理器也将能够更好地解决访问抖动问题。
这是来自NUMA 上 ArsTechnica 页面的快速图片。

如果 Nehalem 和i7您感兴趣,我在这个答案中有更多链接。
调度程序只是执行下一个准备好在“空闲”内核/CPU 上执行的线程。
您可以通过 Windows 任务管理器将进程分配给特定的 CPU。
4 个内核占 25% 意味着同时执行 4 个线程。而 x% 的一个核心意味着只执行一个线程。所以前者在某些情况下效率更高。
但是在执行过程中,CPU 的缓存中充满了线程访问的数据。因此,如果线程在另一个 CPU 上执行,它将遇到更多缓存未命中,这是代价高昂的,因为数据不在该 CPU 的缓存中。
你的线程有什么作用?如果线程“休眠”了很短的时间,则之前在其上执行的核心可能被另一个威胁占用,因此您的线程将在下一个可用核心上执行。如果您只指定一个核心供您的流程使用(例如 ia 任务管理器),会发生什么情况?
| 归档时间: |
|
| 查看次数: |
8104 次 |
| 最近记录: |