为线程设置关联掩码的任何实际性能增益?

时间:2011-01-14 18:04:15

标签: multithreading performance

实际上,主题。什么时候合理?

linux和windows之间有什么区别吗?

4 个答案:

答案 0 :(得分:2)

有一个example(它只是一个基准),在设置线程的亲和力时可以获得真正的性能提升(它们通过亲和力和其他一些黑客获得性能提升约10倍)。

在此基准测试中,至少允许使用Core Quad的功能,它实际上是两个双核处理器,因此不同内核之间的通信价格不同。

他们运行两个并行模拟,以消除核心对之间昂贵的交互。每个模拟在其核心对上运行,这里亲和力有助于避免(正如在其他答案中所说的那样)将线程从一个核心移动到另一个核心并返回。

答案 1 :(得分:1)

当你相信你可以超越调度程序时。这应该是非常罕见的。

答案 2 :(得分:0)

在某些时候,我们正在自动化Microsoft Word进行一些批处理,并且它在多CPU系统上随机崩溃。我们认为这是一个并发内存访问错误,并开始将Word进程关联设置为仅在单个核心上运行。它解决了这个问题。 我知道这不是你想要的,但决定分享:)

答案 3 :(得分:0)

正如MK所说,只有在您觉得应用程序只需要在一定数量的内核上运行时,唯一需要的条件就是这样。在他的例子中哪个是合理的。在其他情况下,您希望让您的应用程序避免瓶颈系统,例如假设您的进程在四核计算机的4个核心上并发运行,这导致其他可能正在执行活动的程序必须等待额外的时间。您可以将程序设置为仅使用2个核心,以允许其他2个核心处理来自不同应用程序的其他重要信息。大多数情况下,除非有特定需求,或者您的应用程序需要某些性能调整才能自行或与其他应用程序一起高效运行,否则您不需要这样做。