不同线程上的动态分配会减慢我的主处理线程吗?

时间:2014-06-20 19:53:43

标签: c++ multithreading performance low-latency

我有一个关键线程,可以在紧密循环中处理数据。它具有亲和力,适用于高性能处理。它没有动态分配。

我有另一个运行在不同核心上的线程,它不执行任何关键工作但是会进行动态分配。它也是亲和力约束。

执行动态分配的其他线程是否会影响我的关键线程?

1 个答案:

答案 0 :(得分:0)

当然,是的 不仅是内存布局和L3垃圾的间接影响,而且偶尔也会产生立竿见影的效果 当调用 malloc 时,它会尝试重用已经分配和释放的内容,但有时必须扩展进程内存空间,它通过调用 mmap BRK 。
我不是100%确定 brk ,但是 mmap 肯定会使TLB失效,所以你应该期望在这些调用之后更慢地处理页面错误。
如果您使用的是Linux或* BSD,那么您可以尝试使用内核代码在所有情况下都不会失效,但不要指望它很简单。