2010-05-03 2 views
0

Я пытаюсь использовать распределитель для работы, но, похоже, нет. У меня есть тестовое приложение, которое выполняет много динамического управления памятью. Время выполнения для диспетчера памяти Hoard и glibc одинаково. Меня заставляет задуматься, правильно ли я поступаю.Распределитель кладов не «работает»?

Что я делаю ...

export LD_PRELOAD="/path/libhoard.so" 

g++ main.cpp -O3 -o bm -lpthread -lrt 

Если я не должен связать копить аллокатора? Имеет ли значение какой путь (в LD_PRELOAD), или я могу иметь любой путь?

Я бегу Ubuntu 8.04, и г ++ 4.2.4

Приветствия


Никто не знает любую команду Linux (например, Grep), чтобы выяснить, если Клад правильно загружена, и используется фактический распределитель?

+0

Вы действительно не используете/путь, вы? Замените фактический путь. –

+0

Конечно нет. :-) Мне было интересно, обязательно ли это, например. в/usr/local/lib или аналогичных – Cowboy

ответ

6

Автор Hoard здесь.

(a) Любой путь для LD_PRELOAD в порядке (при условии, что он правильный).

(b) Чтобы узнать, использует ли ваш код Hoard или нет, используйте команду ldd. Если все пойдет по плану, вы увидите библиотеку Hoard (обратите внимание на вторую строку после второго вызова ldd).

Бест,

- Emery Berger

bash-3.2$ ldd /bin/ls 
    linux-vdso.so.1 => (0x00007fffe6dfd000) 
librt.so.1 => /lib64/librt.so.1 (0x0000003159600000) 
libacl.so.1 => /lib64/libacl.so.1 (0x000000315e200000) 
libselinux.so.1 => /lib64/libselinux.so.1 (0x000000315d200000) 
libc.so.6 => /lib64/libc.so.6 (0x0000003154e00000) 
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003155a00000) 
/lib64/ld-linux-x86-64.so.2 (0x0000003154a00000) 
libattr.so.1 => /lib64/libattr.so.1 (0x0000003162000000) 
libdl.so.2 => /lib64/libdl.so.2 (0x0000003155600000) 
libsepol.so.1 => /lib64/libsepol.so.1 (0x000000315ce00000) 
bash-3.2$ export LD_PRELOAD=$PWD/libhoard.so 
bash-3.2$ ldd /bin/ls 
linux-vdso.so.1 => (0x00007fff24bfd000) 
/nfs/cm/users1/emery/scratch/projects/hoard/trunk/src/libhoard.so (0x00002b4885f42000) 
librt.so.1 => /lib64/librt.so.1 (0x0000003159600000) 
libacl.so.1 => /lib64/libacl.so.1 (0x000000315e200000) 
libselinux.so.1 => /lib64/libselinux.so.1 (0x000000315d200000) 
libc.so.6 => /lib64/libc.so.6 (0x0000003154e00000) 
libdl.so.2 => /lib64/libdl.so.2 (0x0000003155600000) 
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003155a00000) 
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x000000315b200000) 
libm.so.6 => /lib64/libm.so.6 (0x0000003155200000) 
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000315aa00000) 
/lib64/ld-linux-x86-64.so.2 (0x0000003154a00000) 
libattr.so.1 => /lib64/libattr.so.1 (0x0000003162000000) 
libsepol.so.1 => /lib64/libsepol.so.1 (0x000000315ce00000) 
bash-3.2$ 
Смежные вопросы