设置线程以在特定核心上工作的优势?

时间:2009-05-27 09:54:08

标签: multithreading performance multicore parallel-processing

是否有任何证据表明通过手动选择运行线程的处理器可以提高系统性能?

例如,假设您将执行效果最好的线程专用于一个核心,将所有其他“帮助”线程专用于一秒。

2 个答案:

答案 0 :(得分:1)

我看不出有这种情况。

请记住,任何支持多处理器的操作系统都会自动分配处理器时间,以试图平衡处理器负载。

这意味着实际上,您运行的任何进程线程将根据线程优先级不断中断,以便操作系统可以将处理器时间分配给其他进程。同一线程中的单个计算甚至可能不会在同一个处理器上执行。

如果您修复了只在指定处理器上运行的进程代码,那么这可能会影响其性能,因为它不允许操作系统平衡处理器负载。

我认为你可以将它的大部分作为一个关键部分,但这会妨碍你在其他领域的应用,特别是处理任何子线程。

答案 1 :(得分:0)

至少从理论上讲,似乎可以通过让线程在不同内核之间反弹来降低系统性能。由于许多多核设计涉及每个核心的单独L1缓存,因此每当线程移动到新核心时,线程之前访问的任何数据都不再缓存在新核心中,必须从更高级别的缓存中获取(或记忆)。

保持线程在同一核心上运行将增加L1缓存具有与线程正在执行的操作相关的数据的可能性。当然,这有多大影响取决于其他因素,例如缓存的大小以及在核心上“同时”安排的其他线程数。