web-dev-qa-db-ja.com

特定のプロセスのメモリ使用量(Linux procファイルシステムを使用)

/ procディレクトリのどのファイルと、これらのファイルのどのフィールドが、特定のpidのメモリ使用量を計算する必要があるかを知りたいです。 「stat」ファイルとこのファイルにある「vsize」パラメータを使用してきましたが、これは適切な計算ではありません。誰もがこれのためのより良い式を知っていますか?ありがとう、アナ。

3
Fran Rios

実際、/proc/を使用する必要があります。したがって、注意深く読んでください proc(5)

プロセス1234の場合、/proc/1234/maps(または/proc/1234/smaps)を読み取ってアドレススペースを取得し、/proc/1234/status/proc/1234/statmを読み取ります。

独自のプロセスについては(プログラムで)/proc/self/maps/proc/self/status/proc/self/statmを使用します

Linuxでは、メモリ使用量は非常にあいまいな用語であることに注意してください。 2つのプロセスによってmmap- edされたファイルセグメントをどのようにカウントしますか? mmap(2)getrusage(2) を参照してください

ターミナルでcat /proc/self/mapscat /proc/$$/mapsを試してください。 アドレススペース仮想メモリページキャッシュ[〜#〜] aslr [〜#〜] でウィキページを読み取ります=、 [〜#〜] elf [〜#〜][〜#〜] rss [〜#〜]working set 。 ..