tcmalloc не работает в Ubuntu с использованием -ltcmalloc_minimal

Я установил tcmalloc в Ubuntu 14.0, используя apt-get install libtcmalloc-minimal4

Я сделал следующие шаги:

ln -s libtcmalloc_minimal.so.4.1.2 libtcmalloc_minimal.so
связал мой исполняемый файл с -ltcmalloc_minimal

После запуска кода я не вижу никакой разницы в производительности.

I tried to run with HEAPCHECK to check if tcmalloc is being used, but did not found any warnings associated with HEAPCHECK.

My programs contains malloc calls and openMP. Is there any thing else I need to do? How can I check to make sure that tcmalloc is being used by my program?

3 ответа

Я сделал следующие шаги: ln -s libtcmalloc_minimal.so.4.1.2 libtcmalloc_minimal.so связал мой исполняемый файл с -ltcmalloc_minimal

В общем, никогда не должно быть символической ссылки на такую ​​библиотеку. Тот факт, что вам пришлось это сделать, говорит о том, что вы не установили правильный (разрабатываемый) пакет.

ldd дает "не динамический исполняемый файл".

В этом случае ваш исполняемый файл гарантированно не был связан с libtcmalloc_minimal.so,

Я связал библиотеку с помощью -L <path to .so>

Это не связывает ваш исполняемый файл с какой-либо конкретной библиотекой, это просто говорит вашему компоновщику искать в <path to .so> каталог для библиотек. Вы должны на самом деле попросить компоновщик искать libtcmalloc_minimal, с -ltcmalloc_minimal флаг.

Вы можете поставить точку останова в malloc(), например, в GDB:

(gdb) break malloc
Breakpoint 2 at 0x7ffff72b2130 (3 locations)

Если используется TC-Malloc, при динамическом размещении вы увидите следующее:

Breakpoint 2, 0x00007ffff7ba8c20 in tc_malloc () from  /lib64/libtcmalloc_minimal.so.4
(gdb) bt
#0  0x00007ffff7ba8c20 in tc_malloc () from /lib64/libtcmalloc_minimal.so.4
#1  0x00007ffff729e45d in __fopen_internal () from /lib64/libc.so.6

Получил следующий ответ от группы google-perftool, чтобы проверить, используется ли tcmalloc моей программой:

Если для переменной среды MALLOCSTATS задано значение 1 или 2, в конце должна быть выведена некоторая статистика tcmalloc.

Например, MALLOCSTATS=2 ./myprogram

Другие вопросы по тегам