在这里搜索“线程亲和性”的答案,我发现很多人对此很感兴趣,但除了可能获得稳定的QueryPerformanceTimer结果外,几乎没有理由这样做。
假设一个现代的操作系统和一个现代的2-4插槽工作站/服务器级机器,配备现代的4-6核CPU,还有什么好的理由让人认为他们比操作系统的调度器更了解?在现实世界中,有没有采取更多控制头部亲和力是正确的做法?可以展示哪些类型的性能优势?
上一次我在某个地方看到了设置线程亲和性的好案例(比如,它得到了系统性能真正和显著改进的具体结果的支持),那是关于Win2K设备驱动程序的一些晦涩难懂的事情。但我已经很多年没有见过这样的事情了,所以当有人告诉我他们需要控制线程亲和力时(但不是为什么),这些天我深表怀疑……但很好奇会有不同的表现。
发布于 2011-08-05 23:45:35
主要原因是如果你有严重依赖缓存的东西。操作系统调度程序不一定会按照您希望的程度考虑这一点。
发布于 2011-12-15 01:38:34
我使用它将线程分配给内核;例如,在模拟中,您完全在一个内核上执行物理操作,并允许在另一个内核上执行其余的计算。如果您在一个了解硬件的紧凑环境中,那么能够控制这一点是有意义的。
当然,这个配置需要在每个系统上完成,所以默认情况下,我让操作系统决定要在其上运行的内核,但保留限制内核使用的选项。
发布于 2012-02-18 15:27:38
在操作系统内核中,有时在内核模式驱动程序中,您需要在每个CPU上执行相同的操作(例如,更新系统寄存器)。您可以在单个线程的循环中执行此操作,在每次迭代中更改亲和性。
https://stackoverflow.com/questions/6957687
复制相似问题