我的系统运行的是 Debian 7.4 (3.2.0-4-686)。这是一个裸机系统,没有运行很多进程。该系统唯一做的就是为两个 ISDN 卡和 Asterisk 1.8.24.0 运行两个不同的驱动程序(DAHDI 和 divas4linux)。
问题是:随着时间的推移,机器消耗的内存越来越多。
我做了一些研究,根据 meminfo、slabinfo 和 slabtop,不可回收的大小为 512 的 slab 对象的数量在不断增加:
MemTotal: 1025984 kB
MemFree: 648568 kB
Buffers: 145404 kB
Cached: 69952 kB
SwapCached: 0 kB
Active: 142724 kB
Inactive: 88460 kB
Active(anon): 18028 kB
Inactive(anon): 3416 kB
Active(file): 124696 kB
Inactive(file): 85044 kB
Unevictable: 3092 kB
Mlocked: 3092 kB
HighTotal: 128904 kB
HighFree: 32192 kB
LowTotal: 897080 kB
LowFree: 616376 kB
SwapTotal: 310268 kB
SwapFree: 310268 kB
Dirty: 12 kB
Writeback: 0 kB
AnonPages: 18932 kB
Mapped: 13128 kB
Shmem: 3448 kB
Slab: 129952 kB
SReclaimable: 17272 kB
SUnreclaim: 112680 kB
KernelStack: 672 kB
PageTables: 660 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 823260 kB
Committed_AS: 62972 kB
VmallocTotal: 122880 kB
VmallocUsed: 28700 kB
VmallocChunk: 93208 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8184 kB
DirectMap2M: 903168 kB
我如何进一步调查哪个进程可能导致此内存使用量?
答案1
导致内存泄漏的问题终于解决了。问题出在基于 HFC 的 ISDN 线路卡的 zaphfc 内核驱动程序中。更多信息(以及修复该问题的驱动程序源补丁)可在此处找到: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=721147