Linux Kernel lowmem usage

I am debugging an issue where we are running out of kernel low memory and I am trying to identify who is using the kernel low memory thats contributing to the problem.

Following is the meminfo output:

MemTotal:     16622556 kB
MemFree:      11429420 kB
Buffers:        146268 kB
Cached:        2898228 kB
RAMCached:     1213120 kB
Allowed:       4155639 Pages
Free:          2857355 Pages
Available:     3317413 Pages
SwapCached:          0 kB
Active:        3004716 kB
Inactive:      1694188 kB
HighTotal:    16045340 kB
HighFree:     11419648 kB
LowTotal:       577216 kB
LowFree:          9772 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               8 kB
Writeback:           0 kB
Mapped:        1871960 kB
Slab:           304260 kB
CommitLimit:   8311276 kB
Committed_AS:  5438236 kB
PageTables:      20956 kB
VmallocTotal:   311288 kB
VmallocUsed:    253900 kB
VmallocChunk:    48892 kB

I looked at the following fields in the output above:

LowTotal: 577216 kB
LowFree: 9772 kB
Slab: 304260 kB

If I add up the memory allocation in /proc/slabinfo, that matches with the slab content(304kb) mentioned above.

I looked at kernel source code and I see that lowfree is calculated as (totalfree-highfree) which matches in the table above.

I am wondering where the remaining 263mb(lowtotal-lowfree-slab, 577216-9772-304260=263184mb) of low memory is used. Looks like lowmem is used for purposes other than slab. Once I figure out who else is using lowmem other than slab, I can try to figure out where the memory is getting list.

Basically, my goal is trying to find who is using the 570mb of lowmem.

I looked at different mailgroups which explains meminfo and slabinfo details but I have not seen details of the lowmem usage details.

Thanks Sreenivas


This doesn't directly answer your question but I did find this info about /proc/meminfo that Red Hat put out a while ago, which might be helpful. The page is here, titled: Tips & Tricks Featured Article: /proc/meminfo Explained.

excerpt

LowFree: The amount of free memory of the low memory region. This is the memory the kernel can address directly. All kernel datastructures need to go into low memory.

So I'm wondering if there are some datastructures that are consuming that 263MB you're asking about, your math would seem to indicate that this might be the case.

Also I wrote up a page on the U&L site about How much RAM does the kernel use?, specifically showing several tools such as slabtop as well as some additional /proc structures that might help you to get to the bottom of your question.