multithreading - 如今,设置线程亲和性而不是将其留给操作系统的充分理由是什么?

标签 multithreading operating-system scheduling affinity

在这里搜索“线程亲和性”的答案,我发现人们对此很感兴趣,但除了可能获得稳定的 QueryPerformanceTimer 结果之外,没有什么理由。

假设有一个现代操作系统和一个具有现代 4-6 核 CPU 的现代 2-4 插槽工作站/服务器类机器,那么人们有什么充分理由认为他们比操作系统的调度程序更了解呢?在现实世界中是否有任何情况下,更多地控制广告亲和性是正确的做法?可以展示什么样的性能优势?

上次我在某处看到一个非常好的设置线程亲和性的案例(例如,它得到了具体结果的支持,显示了系统性能的真正和显着的改进),这是与 Win2K 设备驱动程序有关的一些晦涩的事情。但我已经很多年没有见过这样的事情了,所以当有人告诉我他们需要控制线程亲和性(但不是为什么)时,我对此深感怀疑……但很想知道不是这样的。

最佳答案

主要原因是您的某些内容严重依赖于缓存。操作系统调度程序不一定会按照您希望的程度考虑这一点。

关于multithreading - 如今,设置线程亲和性而不是将其留给操作系统的充分理由是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957687/

相关文章:

objective-c - 如何防止 dispatch_group 卡住?

assembly - 在VirtualBox上运行操作系统

java - File.length 平台和文件系统是否独立

operating-system - 谁在系统中实际执行调度

.net - 如何以空闲优先级启动 .NET 进程?

c++ - 如何让一个函数同时运行多次?

c++ - 并行插入排序、幼稚尝试、使用 pthread 尝试失败、线程未并行排序,但与串行一起工作正常

c - 多线程项目结构

operating-system - 带比较和交换的有界等待互斥

linux - 调度算法如何确定进程类型(I/O,CPU bound)