web-dev-qa-db-ja.com

anon-rssとtotal-vmの意味

最近、LinuxマシンのTomcatプロセスが突然終了しました。調査後、/ var/log/messagesファイルに次のエラーメッセージが見つかりました。

 kernel:[1799319.246494]メモリ不足:プロセス28536(Java)スコア673を強制終了するか、childSepを犠牲にします
 kernel:[1799319.246506]プロセス28536(Java)を強制終了しましたtotal-vm:1271568kB、anon-rss :426528kB、file-rss:0kB 

さて、誰かがtotal-vmに含まれるものすべてとanon-rssrssとどう違うのか教えてください。

40
UW20989

私が理解しているように、プロセスが使用する仮想メモリのサイズは「total-vm」としてリストされています。その一部は、実際にRAM自体(割り当てられて使用されている)。これは「RSS」です。

RSSの一部は、実際のメモリブロックに割り当てられます(ファイルまたはデバイスにマッピングされる場合を除く)。これは匿名メモリ(「anon-rss」)であり、デバイスとファイル(「file-rss」)にマップされるRSSメモリブロックもあります。

したがって、vimで巨大なファイルを開くと、file-rssが高くなります。反対に、大量のメモリをmalloc()して実際に使用すると、anon-rssも高くなります。

反対に、(malloc()を使用して)大量のスペースを割り当てたが、それを使用しない場合、total-vmは高くなりますが、実際のメモリは使用されません(メモリのオーバーコミットのため)。 rss値は低くなります。

71
Breno Leitão