Linuxでアプリがなぜメモリを使いすぎているのかsystemtapで調べる

安井です。


(書きかけです。) 興味ある人いたら書きます。

Linuxでアプリケーション開発をしていてメモリ不足で困っている方へ。多量にメモリを消>費しているが、プログラムのどこで多量にメモリを消費しているか調べたいと思っている方へ

リークの発見はvalgrindで発見。

大量メモリ消費といえば、まずはメモリリークを疑うと思います。メモリリークを調べるのはValgrindが便利です。Valgrindを使ったメモリリーク発見方法は、書いている方がたくさんいるので、そちらを参照してください。

ここでは、pmapとsystemtapを用いた方法を紹介。

pmap -x で、確保したメモリサイズとアドレスを確認。

[anon] 領域のアドレスを確認

systemtapで、プログラム上のコード箇所を確認。

systemtapインストール

デバッグシンボルのインストール

malloc, mmap をトレース(関数引数、関数戻り値、スタックトレースを表示)

調査対象の anon 領域のアドレスの箇所を確認

スタックトレースから、メモリを確保した該当箇所を確認