Tracking kernel memory usage

Submitted by TragicWarrior
on June 4, 2009 - 3:13pm

Is there an equivalent to "top" which shows how much memory the kernel is using of it's 1GB? I know that /proc/buddyinfo provides some insight into this, but I haven't found any tool that offers "human-readable" information.

Not sure what you're looking

Mark Seger (not verified)
on
June 11, 2009 - 2:09pm

Not sure what you're looking for in human readable format, but if you haven't played with collectl yet: http://collectl.sourceforge.net/ perhaps you should. In the area of reporting memory usage is summarized buddyinfo and even has a top-like display for slab summary data and allows you to sort on a variety of fields.

In none of the output is human-readable enough for you and you know perl, it's real easy to write your own display routines. Just as in the forum/mailing list if you need some assistance.

-mark

Nice tool...

TragicWarrior
on
June 16, 2009 - 8:36am

..but not exactly what I'm looking for.

The kernel allocates memory for drivers, socket buffers and all sorts of internal data structures. This memory is not (easily) accessible to user processes and it remains mostly transparent. On i386 systems there is a 3/1 memory split which means each process can address 4GB but the top 1GB (0xC0000000) is not available to the user.

Within this 1GB, the kernel manages memory for itself using the "buddy" method to carve out chunks of memory in various sizes. The /proc/buddyinfo shows the number of available chunks in varying sizes that are available through kmalloc(). To make the data in /proc/buddyinfo intelligible, you have to multiply the number of items in a column by pagesize (typically 4K) by 2^(column position-1)

I was hoping someone had already written a tool to watch this.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.