katsuhiro/refmon
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[katsuhiro]] -> katsuhiro/refmon
*ptrace によるリファレンスモニタ [#j5fb9d47]
ptrace を用いてリファレンスモニタを書くときの話題など。
-[[clone&fork&vfork>katsuhiro/refmon/clone]]
-[[wait>katsuhiro/refmon/wait]]
-[[signal>katsuhiro/refmon/signal]]
-[[execve>katsuhiro/refmon/execve]]
-[[ptrace>katsuhiro/refmon/ptrace]]
-[[stack dump>katsuhiro/refmon/stack_dump]]
-[[stack image>katsuhiro/refmon/stack_image]]
-[[ARM port>katsuhiro/refmon/arm_port]]
-[[To Do>katsuhiro/refmon/todo]]
-他にもまだあると思う。
**システムコール一覧 [#h633996b]
i386
/usr/src/linux/arch/i386/kernel/syscall_table.S
arm
/usr/src/linux/arch/arm/kernel/calls.S
名前が微妙に違うので、/usr/src/linux/include/unistd.h か...
**メモリマップを変更する可能性のあるシステムコール [#f278...
sys_brk, sys_mmap, sys_mmap2, sys_munmap
他にもあるかなあ。
**暫定ベンチマーク [#me5318b2]
-環境
--CPU: Intel Celeron/2.5GHz
--Mem: 512MB
--Make: GNU Make 3.80
--g++: Debian 1:3.3.5-13
コマンドは
make
cp refmon refmon_
make clean
time ./refmon_ 1 make
でリファレンスモニタ自身の make にかかる時間を測定してい...
2006年 3月 24日
-スタックトレースとシンボル解決(キャッシュするようにして...
-シンボル解決を外したもの
-バックトレースを外したもの
-リファレンスモニタなしのもの
の 4つでベンチマーク、カッコ内は監視なしとの速度比である
full(18%)
3m54.084s
no resolve(57%)
1m16.385s
no backtrace(82%)
0m53.723s
native(100%)
0m44.230s
考察
-ptrace で止めること自体で 20%近くダウンする、かなり遅く...
-スタックバックトレース自体ではさらに 30%ダウン、かなり遅...
-さらにシンボル解決の処理が超絶遅い、要改善
--mmap や munmap のときに /proc/(pid)/maps を読みに行く
--そのとき実行ファイル、ロードされるライブラリなどを解釈...
--さらに、シンボル名の探索を線形探索にしているせいでさら...
---これはさぼっただけ
**重要なファイルの一覧 [#n3803493]
-全般
--/usr/include/sys/user.h
--/usr/include/asm/user.h
(ptrace(2) で読み込める USER 領域の定義など)
-シグナル関連
--/usr/arc/linux/kernel/signal.c
-wait 関連
--/usr/src/linux/kernel/exit.c
(sys_wait4, sys_waitpid の実装部分)
-ARM 関連
--/usr/src/linux/arch/arm/kernel/entry-common.S
(system_call など)
-i386 fork 関連
--/usr/src/linux/arch/i386/kernel/entry.S
(system_call, syscall_trace の呼出し)
--/usr/src/linux/arch/i386/kernel/process.c
(sys_fork, sys_vfork, sys_clone の実装部分)
--/usr/src/linux/arch/i386/kernel/ptrace.c
(sys_ptrace の実装部分)
--/usr/src/linux/kernel/fork.c
(カーネル関数 do_fork の実装部分)
-sigreturn 関連
--/usr/src/linux/arch/i386/kernel/signal.c
(sys_sigreturn, sys_rt_sigreturn の実装部分)
終了行:
[[katsuhiro]] -> katsuhiro/refmon
*ptrace によるリファレンスモニタ [#j5fb9d47]
ptrace を用いてリファレンスモニタを書くときの話題など。
-[[clone&fork&vfork>katsuhiro/refmon/clone]]
-[[wait>katsuhiro/refmon/wait]]
-[[signal>katsuhiro/refmon/signal]]
-[[execve>katsuhiro/refmon/execve]]
-[[ptrace>katsuhiro/refmon/ptrace]]
-[[stack dump>katsuhiro/refmon/stack_dump]]
-[[stack image>katsuhiro/refmon/stack_image]]
-[[ARM port>katsuhiro/refmon/arm_port]]
-[[To Do>katsuhiro/refmon/todo]]
-他にもまだあると思う。
**システムコール一覧 [#h633996b]
i386
/usr/src/linux/arch/i386/kernel/syscall_table.S
arm
/usr/src/linux/arch/arm/kernel/calls.S
名前が微妙に違うので、/usr/src/linux/include/unistd.h か...
**メモリマップを変更する可能性のあるシステムコール [#f278...
sys_brk, sys_mmap, sys_mmap2, sys_munmap
他にもあるかなあ。
**暫定ベンチマーク [#me5318b2]
-環境
--CPU: Intel Celeron/2.5GHz
--Mem: 512MB
--Make: GNU Make 3.80
--g++: Debian 1:3.3.5-13
コマンドは
make
cp refmon refmon_
make clean
time ./refmon_ 1 make
でリファレンスモニタ自身の make にかかる時間を測定してい...
2006年 3月 24日
-スタックトレースとシンボル解決(キャッシュするようにして...
-シンボル解決を外したもの
-バックトレースを外したもの
-リファレンスモニタなしのもの
の 4つでベンチマーク、カッコ内は監視なしとの速度比である
full(18%)
3m54.084s
no resolve(57%)
1m16.385s
no backtrace(82%)
0m53.723s
native(100%)
0m44.230s
考察
-ptrace で止めること自体で 20%近くダウンする、かなり遅く...
-スタックバックトレース自体ではさらに 30%ダウン、かなり遅...
-さらにシンボル解決の処理が超絶遅い、要改善
--mmap や munmap のときに /proc/(pid)/maps を読みに行く
--そのとき実行ファイル、ロードされるライブラリなどを解釈...
--さらに、シンボル名の探索を線形探索にしているせいでさら...
---これはさぼっただけ
**重要なファイルの一覧 [#n3803493]
-全般
--/usr/include/sys/user.h
--/usr/include/asm/user.h
(ptrace(2) で読み込める USER 領域の定義など)
-シグナル関連
--/usr/arc/linux/kernel/signal.c
-wait 関連
--/usr/src/linux/kernel/exit.c
(sys_wait4, sys_waitpid の実装部分)
-ARM 関連
--/usr/src/linux/arch/arm/kernel/entry-common.S
(system_call など)
-i386 fork 関連
--/usr/src/linux/arch/i386/kernel/entry.S
(system_call, syscall_trace の呼出し)
--/usr/src/linux/arch/i386/kernel/process.c
(sys_fork, sys_vfork, sys_clone の実装部分)
--/usr/src/linux/arch/i386/kernel/ptrace.c
(sys_ptrace の実装部分)
--/usr/src/linux/kernel/fork.c
(カーネル関数 do_fork の実装部分)
-sigreturn 関連
--/usr/src/linux/arch/i386/kernel/signal.c
(sys_sigreturn, sys_rt_sigreturn の実装部分)
ページ名: