Details
-
Bug
-
Resolution: Cannot Reproduce
-
Critical
-
None
-
Lustre 2.4.2
-
None
-
vanilla 2.6.32.61
lustre 2.4.2
Hardware: Dual Xeon L5640 / 24G RAM
-
4
-
13030
Description
On our MDS, we seem to have a memory leak related to buffer cache that is
unreclaimable. Our workload is extremely metadata intensive, so that the MDS is under constant heavy load.
After a fresh reboot the buffer cache is filling up quickly. After a while RAM is used up and the machine starts swapping basically bringing Luster to a halt
(clients disconnect, lock failures, etc.).
The strange thing is that
$ echo 3 > /proc/sys/vm/drop_caches
only frees part of the allocated buffer cache and after a while the unreclaimable part fills up RAM completely leading to the swap disaster.
Setting /proc/sys/vm/vfs_cache_pressure > 100 doesn't help and
a large value of /proc/sys/vm/min_free_kbytes is happily ignored.
Also strange: After unmounting all Lustre targets and even unloading the Lustre kernel modules the kernel still shows the amount of previously allocated buffer cache as used memory even though the amount of buffer cache is then shown as close to zero. So it seems we have big memory leak.
Attachments
Issue Links
- is related to
-
LU-4053 client leaking objects/locks during IO
-
- Resolved
-
I would say that with the two -1 reviews on the 7942 patch should NOT be used in production. If the memory is not listed in slabs or in /proc/sys/lnet/memused then it is not being allocated directly by Lustre (which would print a "memory leaked" message at unmount. If the memory is not allocated directly by Lustre then the Lustre memory debugging code would not be useful for debugging this. It might be a bug in the ldiskfs code but it is hard to know.
Are there unusual uses of the filesystem (e.g. Many create delete cycles in large directories) or some other way that this could be reproduced easily? Have you tried running with a server kernel using the in-kernel memory leak checking? I don't know much of the details, but I think this can be compiled for RHEL kernels.