allenhuang87 发表于 2014-09-28 20:05

linux内核内存泄漏

本帖最后由 allenhuang87 于 2014-09-30 09:08 编辑

请求各位大虾,小弟在调试上述重定向模块时,导致内核内存泄漏,查看proc文件时,看到slab内存区域明显增加,有什么办法可以定位到问题在哪呢
请各位不吝赐教,谢谢
~ # cat /proc/meminfo
MemTotal:         127032 kB
MemFree:         55712 kB
Buffers:               0 kB
Cached:            14808 kB
SwapCached:            0 kB
Active:            11556 kB
Inactive:         7036 kB
Active(anon):       3820 kB
Inactive(anon):      0 kB
Active(file):       7736 kB
Inactive(file):   7036 kB
Unevictable:         0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:             0 kB
AnonPages:          3844 kB
Mapped:             3652 kB
Slab:            48772 kB
SReclaimable:      424 kB
SUnreclaim:      48348 kB
PageTables:          336 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       63516 kB
Committed_AS:       6816 kB
VmallocTotal:    1048404 kB
VmallocUsed:         340 kB
VmallocChunk:    1040844 kB


~ # cat /proc/slabinfo
slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_expect      0      0    144   27    1 : tunables120   60    0 : slabdata      0      0      0
nf_conntrack          51    418    208   19    1 : tunables120   60    0 : slabdata   22   22      0
scsi_sense_cache       1   40   96   40    1 : tunables120   60    0 : slabdata      1      1      0
scsi_cmd_cache         1   24    160   24    1 : tunables120   60    0 : slabdata      1      1      0
sgpool-128             2      2   2048    2    1 : tunables   24   12    0 : slabdata      1      1      0
sgpool-64            2      4   1024    4    1 : tunables   54   27    0 : slabdata      1      1      0
sgpool-32            2      8    512    8    1 : tunables   54   27    0 : slabdata      1      1      0
sgpool-16            2   15    256   15    1 : tunables120   60    0 : slabdata      1      1      0
sgpool-8               2   30    128   30    1 : tunables120   60    0 : slabdata      1      1      0
scsi_data_buffer       0      0   20169    1 : tunables120   60    0 : slabdata      0      0      0
bridge_fdb_cache       9    113   32113    1 : tunables120   60    0 : slabdata      1      1      0
fib6_nodes            11    113   32113    1 : tunables120   60    0 : slabdata      1      1      0
ip6_dst_cache         21   45    256   15    1 : tunables120   60    0 : slabdata      3      3      0
ndisc_cache            4   24    160   24    1 : tunables120   60    0 : slabdata      1      1      0
RAWv6                  4      6    640    6    1 : tunables   54   27    0 : slabdata      1      1      0
UDPLITEv6            0      0    608    6    1 : tunables   54   27    0 : slabdata      0      0      0
UDPv6                  1      6    608    6    1 : tunables   54   27    0 : slabdata      1      1      0
tw_sock_TCPv6          1   24    160   24    1 : tunables120   60    0 : slabdata      1      1      0
request_sock_TCPv6      0      0    128   30    1 : tunables120   60    0 : slabdata      0      0      0
TCPv6                  3      6   1184    6    2 : tunables   24   12    0 : slabdata      1      1      0
flow_cache             0      0   80   48    1 : tunables120   60    0 : slabdata      0      0      0
fuse_request         0      0    400   10    1 : tunables   54   27    0 : slabdata      0      0      0
fuse_inode             0      0    352   11    1 : tunables   54   27    0 : slabdata      0      0      0
jffs2_inode_cache   1313   1450   24145    1 : tunables120   60    0 : slabdata   10   10      0
jffs2_node_frag   2233   3045   24145    1 : tunables120   60    0 : slabdata   21   21      0
jffs2_refblock       453    480    248   16    1 : tunables120   60    0 : slabdata   30   30      0
jffs2_tmp_dnode      0      0   32113    1 : tunables120   60    0 : slabdata      0      0      0
jffs2_raw_inode       16   56   68   56    1 : tunables120   60    0 : slabdata      1      1      0
jffs2_raw_dirent       0      0   40   92    1 : tunables120   60    0 : slabdata      0      0      0
jffs2_full_dnode    2330   3654   16203    1 : tunables120   60    0 : slabdata   18   18      0
jffs2_i            134    273    304   13    1 : tunables   54   27    0 : slabdata   21   21      0
ntfs_big_inode_cache      0      0    416    9    1 : tunables   54   27    0 : slabdata      0      0      0
ntfs_inode_cache       0      0    152   26    1 : tunables120   60    0 : slabdata      0      0      0
ntfs_name_cache      0      0    512    8    1 : tunables   54   27    0 : slabdata      0      0      0
ntfs_attr_ctx_cache      0      0   32113    1 : tunables120   60    0 : slabdata      0      0      0
ntfs_index_ctx_cache      0      0   64   59    1 : tunables120   60    0 : slabdata      0      0      0
fat_inode_cache      0      0    320   12    1 : tunables   54   27    0 : slabdata      0      0      0
fat_cache            0      0   20169    1 : tunables120   60    0 : slabdata      0      0      0
ext2_inode_cache       0      0    384   10    1 : tunables   54   27    0 : slabdata      0      0      0
fasync_cache         0      0   16203    1 : tunables120   60    0 : slabdata      0      0      0
nsproxy                0      0   24145    1 : tunables120   60    0 : slabdata      0      0      0
posix_timers_cache      0      0    112   35    1 : tunables120   60    0 : slabdata      0      0      0
uid_cache            0      0   64   59    1 : tunables120   60    0 : slabdata      0      0      0
UNIX                  12   20    384   10    1 : tunables   54   27    0 : slabdata      2      2      0
UDP-Lite               0      0    480    8    1 : tunables   54   27    0 : slabdata      0      0      0
tcp_bind_bucket      4    113   32113    1 : tunables120   60    0 : slabdata      1      1      0
inet_peer_cache      2   59   64   59    1 : tunables120   60    0 : slabdata      1      1      0
secpath_cache          0      0   32113    1 : tunables120   60    0 : slabdata      0      0      0
xfrm_dst_cache         0      0    288   13    1 : tunables   54   27    0 : slabdata      0      0      0
ip_fib_alias         0      0   16203    1 : tunables120   60    0 : slabdata      0      0      0
ip_fib_hash         17    101   36101    1 : tunables120   60    0 : slabdata      1      1      0
ip_dst_cache          70    165    256   15    1 : tunables120   60    0 : slabdata   11   11      0
arp_cache             10   30    128   30    1 : tunables120   60    0 : slabdata      1      1      0
RAW                  2      8    480    8    1 : tunables   54   27    0 : slabdata      1      1      0
UDP                   24   24    480    8    1 : tunables   54   27    0 : slabdata      3      3      0
tw_sock_TCP            0      0    128   30    1 : tunables120   60    0 : slabdata      0      0      0
request_sock_TCP       0      0   96   40    1 : tunables120   60    0 : slabdata      0      0      0
TCP                  4   14   1056    7    2 : tunables   24   12    0 : slabdata      2      2      0
eventpoll_pwq          0      0   36101    1 : tunables120   60    0 : slabdata      0      0      0
eventpoll_epi          0      0   96   40    1 : tunables120   60    0 : slabdata      0      0      0
blkdev_queue         3      7   1096    7    2 : tunables   24   12    0 : slabdata      1      1      0
blkdev_requests      8   19    200   19    1 : tunables120   60    0 : slabdata      1      1      0
blkdev_ioc             0      0   44   84    1 : tunables120   60    0 : slabdata      0      0      0
bio-0                  2   30    128   30    1 : tunables120   60    0 : slabdata      1      1      0
biovec-256             2      2   3072    2    2 : tunables   24   12    0 : slabdata      1      1      0
biovec-128             0      0   1536    5    2 : tunables   24   12    0 : slabdata      0      0      0
biovec-64            0      0    768    5    1 : tunables   54   27    0 : slabdata      0      0      0
biovec-16            0      0    192   20    1 : tunables120   60    0 : slabdata      0      0      0
sock_inode_cache      84   84    320   12    1 : tunables   54   27    0 : slabdata      7      7      0
skbuff_fclone_cache      1   10    384   10    1 : tunables   54   27    0 : slabdata      1      1      0
skbuff_head_cache1812018120    192   20    1 : tunables120   60    0 : slabdata    906    906      0
file_lock_cache       16   40   96   40    1 : tunables120   60    0 : slabdata      1      1      0
proc_inode_cache   208    208    288   13    1 : tunables   54   27    0 : slabdata   16   16      0
sigqueue               8   27    144   27    1 : tunables120   60    0 : slabdata      1      1      0
radix_tree_node      451    704   88   44    1 : tunables120   60    0 : slabdata   16   16      0
bdev_cache             2   10    384   10    1 : tunables   54   27    0 : slabdata      1      1      0
mnt_cache             16   30    128   30    1 : tunables120   60    0 : slabdata      1      1      0
filp               330    570    128   30    1 : tunables120   60    0 : slabdata   19   19      0
inode_cache          199    210    264   15    1 : tunables   54   27    0 : slabdata   14   14      0
dentry               589    960    128   30    1 : tunables120   60    0 : slabdata   32   32      0
names_cache            4      4   4096    1    1 : tunables   24   12    0 : slabdata      4      4      0
buffer_head            0      0   64   59    1 : tunables120   60    0 : slabdata      0      0      0
vm_area_struct       666    966   84   46    1 : tunables120   60    0 : slabdata   21   21      0
mm_struct             39   50    384   10    1 : tunables   54   27    0 : slabdata      5      5      0
fs_cache            64    113   32113    1 : tunables120   60    0 : slabdata      1      1      0
files_cache         36   60    192   20    1 : tunables120   60    0 : slabdata      3      3      0
signal_cache          90   90    448    9    1 : tunables   54   27    0 : slabdata   10   10      0
sighand_cache         54   60   3104    2    2 : tunables   24   12    0 : slabdata   30   30      0
task_struct         72   84   1112    7    2 : tunables   24   12    0 : slabdata   12   12      0
cred_jar             200    200   96   40    1 : tunables120   60    0 : slabdata      5      5      0
anon_vma             339    678      8339    1 : tunables120   60    0 : slabdata      2      2      0
pid                  118    118   64   59    1 : tunables120   60    0 : slabdata      2      2      0
idr_layer_cache       95    104    148   26    1 : tunables120   60    0 : slabdata      4      4      0
size-4194304         0      0 4194304    1 1024 : tunables    1    1    0 : slabdata      0      0      0
size-2097152         0      0 2097152    1512 : tunables    1    1    0 : slabdata      0      0      0
size-1048576         0      0 1048576    1256 : tunables    1    1    0 : slabdata      0      0      0
size-524288            0      0 524288    1128 : tunables    1    1    0 : slabdata      0      0      0
size-262144            0      0 262144    1   64 : tunables    1    1    0 : slabdata      0      0      0
size-131072            3      3 131072    1   32 : tunables    8    4    0 : slabdata      3      3      0
size-65536             0      065536    1   16 : tunables    8    4    0 : slabdata      0      0      0
size-32768             6      632768    1    8 : tunables    8    4    0 : slabdata      6      6      0
size-16384            73   7316384    1    4 : tunables    8    4    0 : slabdata   73   73      0
size-8192            652    656   8192    1    2 : tunables    8    4    0 : slabdata    652    656      0
size-4096             38   38   4096    1    1 : tunables   24   12    0 : slabdata   38   38      0
size-2048          1749217492   2048    2    1 : tunables   24   12    0 : slabdata   8746   8746      0
size-1024             63   80   1024    4    1 : tunables   54   27    0 : slabdata   20   20      0
size-512             416    416    512    8    1 : tunables   54   27    0 : slabdata   52   52      0
size-256             105    105    256   15    1 : tunables120   60    0 : slabdata      7      7      0
size-192             240    240    192   20    1 : tunables120   60    0 : slabdata   12   12      0
size-128             480    480    128   30    1 : tunables120   60    0 : slabdata   16   16      0
size-96            380   1160   96   40    1 : tunables120   60    0 : slabdata   29   29      0
size-64            1032510325   64   59    1 : tunables120   60    0 : slabdata    175    175      0
size-32             2253   2373   32113    1 : tunables120   60    0 : slabdata   21   21      0
kmem_cache         113    120   96   40    1 : tunables120   60    0 : slabdata      3      3      0

Tinnal 发表于 2014-09-28 23:04

唉,这么小的程序自己仔细点检测一下分配出去的内核是否都得到及时释放不就完了吗。

就你这个程序,我就怎么也找不到释放
pauth_user_have = kmalloc( sizeof(AUTHED_USER_S) ,GFP_KERNEL );
分配出来的内存的地方。

humjb_1983 发表于 2014-09-29 09:00

slabtop可以观察slab的变化情况~,再结合代码看~

allenhuang87 发表于 2014-09-30 09:09

回复 2# Tinnal


    这个东西的释放是在另外一个地方的释放的!

allenhuang87 发表于 2014-09-30 09:11

回复 3# humjb_1983


    我打开了slab_allocatorg调试,定位了问题

7863612 发表于 2015-03-03 16:42

我最近也发现了这个问题,环境是嵌入式linux,64M内存,slab数据中SUnreclaim数据一上来就很高大概在30m左右,求解,楼主应用程序出现了什么问题?别的程序内存泄漏?怎么定位的啊?回复 5# allenhuang87


   
页: [1]
查看完整版本: linux内核内存泄漏