【问题标题】:Redis under asan with jemalloc带有jemalloc的asan下的redis
【发布时间】:2016-01-16 16:45:36
【问题描述】:

我正在以 4 种不同的方式编译 Redis 3.0.6:

  1. jemalloc
  2. libc malloc
  3. asan + jemalloc (-fsanitize=address -fno-omit-frame-pointer)
  4. asan + libc malloc

然后我在所有这些二进制文件下运行标准redis-bench。我不明白的是场景3 的性能非常接近场景1

谁能向我解释这怎么可能?我没有在 asan 手册上找到任何不支持 jemalloc 或相关内容的内容。

【问题讨论】:

    标签: redis malloc sanitizer


    【解决方案1】:

    你没有提供确切的复制案例,但我猜是你

    • 使用 GCC
    • 使用 LD_PRELOAD 链接到 jemalloc

    在这种情况下,jemalloc 的分配器将覆盖 ASan 的拦截器,并且不会检查堆分配(这将解释您的运行速度不会减慢)。相反,您应该将可执行文件与 jemalloc 静态链接:

    LDFLAGS += -ljemalloc
    

    我认为理想情况下,当 ASan 未能拦截堆分配器时,它应该报告一个有用的警告,因此您可能希望在他们的 github 上提交错误。

    【讨论】:

      猜你喜欢
      • 2012-03-20
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 2018-03-31
      • 2023-02-12
      • 2012-05-28
      • 1970-01-01
      • 2012-11-11
      相关资源
      最近更新 更多