1

我们正在将多进程应用程序移植到多线程架构。我们在 Windows 上运行相同的应用程序,它非常高效。

对于 Linux,我们使用 pthread 库。为了避免内存争用,我们有自定义堆,每个线程都有自己的堆。我们将 mspace 用于此自定义堆实现。然而问题是这种方法会导致大量的性能开销。与本机 malloc 相比,mspace 内存分配非常慢。这是瓶颈。我们尝试了 Hoard 分配器,但情况更糟。

性能影响是由于: 1. CPU 切换:我看到 LWP 中的切换比普通多进程中的切换更多 2. 内存分配:我看到 mspace 花费的时间大约是普通 malloc 的 7 到 8 倍

是否有任何替代方案可以在 Linux 中实现高性能的多堆?

4

0 回答 0