Coder Perfect

What are the meanings of anon-rss and total-vm?

Problem

Recently, tomcat process on my Linux machine was killed abruptly. Following my investigation, I discovered the following error message in the /var/log/messages file:

kernel: [1799319.246494] Out of memory: Kill process 28536 (java) score 673 or sacrifice childSep 
kernel: [1799319.246506] Killed process 28536 (java) total-vm:1271568kB, anon-rss:426528kB, file-rss:0kB

Now, could someone please tell me what all total-vm includes and how anon-rss differs from rss?

Asked by UW20989

Solution #1

As I understand, the size of the virtual memory that a process uses is listed as “total-vm”. Part of it is really mapped into the RAM itself (allocated and used). This is “RSS”.

Part of the RSS is allocated in real memory blocks (other than mapped into a file or device). This is anonymous memory (“anon-rss”) and there is also RSS memory blocks that are mapped into devices and files (“file-rss”).

So, if you open a large file in vim, the file-rss will be high; yet, if you malloc() a lot of memory and utilize it extensively, the anon-rss will also be high.

On the other hand, if you allocate a lot of space (with malloc()) but never use it, the total-vm will be higher, but no real memory will be used (due to the memory overcommit), resulting in low rss values.

Answered by Breno Leitão

Post is based on https://stackoverflow.com/questions/18845857/what-does-anon-rss-and-total-vm-mean