【问题标题】:Multi core CPU single thread behaviour, not achieving 100%多核 CPU 单线程行为,未达到 100%
【发布时间】:2011-04-03 02:18:31
【问题描述】:

从附图中可以看出,我的双核机器上的 CPU 图形是奇怪的对称!

这是否是某种负载平衡以防止一个核心比另一个核心使用得更多?其背后的原因是什么(可能是热量分布)?

当然我主要关心的是:我的单线程 PSNR 图像算法是否达到 100%?

CPU 是运行 Ubuntu 10.4 的 Core 2 Duo E6850 3Ghz。

谢谢

罗斯

【问题讨论】:

  • 核心并非专用于线程。因此,线程中的任务可能会被放到不同的内核中。
  • 只是一个想法:可能与绘图程序有关,因为在图表上的某些点上,您可能会争辩说该过程在两个内核之间以 50:50 的比例分布。虽然我认为这是不可能的?我说的对吗?

标签: multithreading multicore


【解决方案1】:

您正在使用两个 CPU 实现 50% 的负载。您的程序没有连接到固定的 CPU,因此它会根据内核(以及系统上运行的其他进程)进行切换。

如果您想确保您的进程在您的一个内核上运行,您必须设置关联 (Example here)。这样一来,您应该会看到一个内核 100% 负载,另一个内核用于其他任务。

【讨论】:

  • 我猜这就是他们称之为对称多处理的原因!我不认为我在 Windows 中看到过这种行为。从计算机科学的角度理解它是如何工作的会很棒吗?我想知道是否有任何权衡,例如核心交换之间的延迟时间?
  • 在 SMP(对称多处理)中,对称意味着所有 CPU 都是平等的。非对称是指某些CPU是不同的,根据要实现的任务将任务分配给CPU。
  • 据我所知,Linux 正试图将一个进程固定在 CPU 上。它避免清除一些缓存,并重新加载完整的处理器上下文(寄存器,...)。但是,如果其他进程(例如具有更高优先级的进程)确实需要这个 CPU(因为另一个进程已经很忙),可以将它们暂停,然后处理器会将它们放回下一个可用 CPU。
【解决方案2】:

(应该为此使用 cmets,但我没有足够的代表!)

我以前不止一次遇到过这种情况,而且总是与应用程序冲突。

例如,当 compiz 启动两次或部分卸载时,可能会发生这种情况。我发现同时用两个不同的播放器读取 DVD 时也会发生这种情况。

根据我的经验,这是不正常的行为:计算机速度变慢了很多,当您尝试修复它时,这很烦人!

【讨论】:

  • “(应该为此使用 cmets,但我没有足够的代表!)”......投票反对对我没有帮助......但没关系。但是,您并没有告诉我这是正常行为。这个卸载 JACK 失败:yfrog.com/n6screenshotsmp
猜你喜欢
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
相关资源
最近更新 更多