0

アロケーターを動作させようとしていますが、そうではないようです。多くの動的メモリ管理を行うベンチマーク アプリケーションがあります。Hoard と glibc メモリ マネージャーの実行時間は同じです。自分が正しいことをしているのだろうかと考えさせられます。

私がすることは...

export LD_PRELOAD="/path/libhoard.so"

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

Hoard アロケーターにリンクする必要はありませんか? (LD_PRELOAD 内の) パスが何であるかは重要ですか、または任意のパスを使用できますか?

Ubuntu 8.04 と g++ 4.2.4 を実行しています

乾杯


Hoard が適切にロードされているかどうかを確認するための Linux コマンド (grep など) を知っている人は誰もいません。また、実際のアロケーターが使用されていますか?

4

1 に答える 1

6

買いだめの作者はこちら。

(a) LD_PRELOAD のパスはどれでも構いません (正しい限り)。

(b) コードが Hoard を使用しているかどうかを確認するには、次のlddコマンドを使用します。すべてが計画どおりに進んだ場合、Hoard ライブラリが表示されます (ldd の 2 回目の呼び出しの後の 2 行目に注目してください)。

一番、

-- エメリー・バーガー

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$ 
于 2010-05-07T19:24:01.513 に答える