Распределитель кладов не "работает"? - PullRequest
0 голосов
/ 03 мая 2010

Я пытаюсь накопить распределитель для работы, но, похоже, это не так. У меня есть приложение для тестирования производительности динамического управления памятью. Время выполнения для Hoard и glibc memory manager одинаково. Это заставляет меня задуматься, правильно ли я поступаю.

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

export LD_PRELOAD="/path/libhoard.so"

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

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

Я использую Ubuntu 8.04 и g ++ 4.2.4

Приветствия


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

1 Ответ

6 голосов
/ 07 мая 2010

Автор Клад здесь.

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

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

Best

- Эмери Бергер

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$ 
...