2

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

例如,假设您将完成最多工作的线程专用于一个核心,而将所有其他“帮助”线程专用于一秒钟。

4

2 回答 2

1

我看不出有这种情况。

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

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

如果您将进程代码固定为仅在一个指定的处理器上运行,那么这可能会阻碍其性能,因为它不允许操作系统平衡处理器负载。

我想你可以把它的大部分作为关键部分,但这会阻碍你在其他领域的应用,尤其是任何子线程的处理。

于 2009-05-27T10:52:01.390 回答
0

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

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

于 2009-05-27T11:02:07.440 回答