2016-01-16 3 views
2

Я компиляции Redis 3.0.6 4 различными способами:Redis под асан с jemalloc

  1. jemalloc
  2. Libc таНос
  3. асан + jemalloc (-fsanitize=address -fno-omit-frame-pointer)
  4. асан + Libc таНос

Затем я запускаю стандарт redis-bench под всеми этими двоичными файлами. Я не понимаю, что сценарий 3 имеет производительность очень близкую к сценарию 1.

Может кто-нибудь объяснить мне, как это возможно? Я ничего не нашел в asan manual, что он не поддерживает jemalloc или что-то важное.

ответ

1

Вы не предоставили точные REPRO-дело, но я думаю, что вы

  • использование GCC
  • ссылка jemalloc используя LD_PRELOAD

В этом случае Распределитель jemalloc будет переопределять Асан-х перехватчики и распределения кучи не будут проверяться (что не объясняет замедление вашего прогона). Вместо этого вы должны статически связать свой исполняемый файл с jemalloc:

LDFLAGS += -ljemalloc 

Я думаю, что в идеале асан должен сообщить полезное предупреждение, когда не перехватывать кучу аллокатор, так что вы можете сообщить об ошибке в их GitHub.

Смежные вопросы