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 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.
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.
Not sure what you're looking
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...
..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.