在现有的大型代码中使用 jemalloc



我有一个巨大的代码分布在多个文件上。此代码当前使用普通 malloc。

我想在其中实现 Jemalloc 以获得更好的性能,我还想使用 Jemalloc 的内存分析器来了解每个分配在该代码中发生的确切方式和位置。

我正在尝试这个超过 3 周。请帮助我。

提前谢谢。

在构建没有任何前缀的jemalloc后,您将拥有一个共享库,其中重新实现了所有malloc系列函数。

假设:Linux环境

如果应用程序在单个终端中运行,则可以LD_PRELOAD环境变量在运行应用程序之前预加载jemalloc.so。像这样:

export LD_PRELOAD=$LD_PRELOAD:/path/to/jemalloc-build/lib/jemalloc.so.1

对于受更改影响的所有应用程序,您可以在文件/etc/ld.so.preload中添加一个新行,其中包含库的路径。(这在基于 Debian 的系统中肯定有效,但也可能在其他系统上有效)

我已经在/usr/local 中安装了我的 jemalloc,所以他不在"正常"的库路径中。

该装置为我创建了一个外壳,以使用 jemalloc 库启动程序。

在某种程度上,它自动化了 Iulius 上面描述的过程,但它只对我想执行的程序使用 jemalloc。如果这是预期用途,您可以执行以下操作:

首先,检查路径中的某个位置是否存在该小脚本:

me@mypc /root # which jemalloc.sh

/usr/local/bin/jemalloc.sh

如果存在,您可以简单地以这种方式执行程序:

me@mypc /root # jemalloc.sh your-program your-program-arguments &

您可以阅读/usr/local/bin/jemalloc.sh以验证它是否与 Iulius 描述的方式类似。

me@mypc /root # jemalloc-config --help将帮助您了解 jemalloc 是如何编译的,并且 me@mypc /root # jemalloc-config --version将向您展示您的 jemalloc 版本。

通过这种方式,您可以验证您的程序是否与 jemalloc 一起正常工作,而无需重新编译它们。然后,您可以做出最终决定。

乔治。

相关内容

  • 没有找到相关文章

最新更新