标签: linux multithreading
我正在16核计算机上运行16个线程的多线程程序(包含大量原子操作)。当我设置线程的亲和性使得每个线程在唯一的cpu上运行时,与非关联版本的程序相比,程序的执行时间增加。使用perf我可以看到,当使用线程核心亲和性时,缓存未命中率从10%增加到30%,这可能是执行时间增加的原因。你能否谈谈如何使用亲和力导致更多的缓存未命中?
答案 0 :(得分:2)
请问一下如何使用亲和力可以导致更多的缓存未命中?
因为这些是 CPU缓存,即每个处理器个人的一组缓存。 例如,两个线程读取相同的数据:
请看 What is a cache miss