Linux 内核低内存使用情况

Linux 内核低内存使用情况

我正在调试一个内核低内存不足的问题,并试图找出是谁使用了导致该问题的内核低内存。

以下是 meminfo 输出:

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

我查看了上面输出中的以下字段:

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

如果我添加 /proc/slabinfo 中的内存分配,它与上面提到的 slab 内容(304kb)相匹配。

我查看了内核源代码,发现 lowfree 的计算方式为 (totalfree-highfree),与上表相符。

我想知道剩余的 263mb(lowtotal-lowfree-slab,577216-9772-304260=263184mb)低内存用在了哪里。看来 lowmem 还用于 slab 以外的用途。一旦我弄清楚除了 slab 之外还有谁在使用 lowmem,我就可以试着找出内存获取列表的位置。

基本上,我的目标是尝试找出谁在使用 570mb 的低内存。

我查看了不同的邮件组,它们解释了 meminfo 和 slabinfo 的详细信息,但我没有看到 lowmem 使用情况的详细信息。

谢谢 Sreenivas

答案1

这并不能直接回答你的问题,但我确实找到了有关/proc/meminfoRed Hat 不久前发布的信息,这可能会有所帮助。页面在这里,标题为:技巧与窍门专题文章:/proc/meminfo 说明

摘抄

LowFree:低内存区域的可用内存量。这是内核可以直接寻址的内存。所有内核数据结构都需要进入低内存。

所以我想知道是否有一些数据结构正在消耗您所询问的 263MB,您的数学计算似乎表明情况可能确实如此。

我也在 U&L 网站上写了一个关于内核使用了多少 RAM?,具体展示了一些工具,例如slabtop以及一些/proc可能有助于您彻底解决问题的附加结构。

相关内容