[GC] "map remapping failed" in long-running server
Kenneth C. Schalk
Wed, 12 Nov 2003 13:03:33 -0500 (EST)
Quoting "Boehm, Hans" <email@example.com>:
> 1) Linux kernels have a default limit of 65536 mappings per process.
> (On some RedHat kernels, this should be changeable through
> /proc/sys/vm/max_map_count, but this doesn't seem to be in the
> official 2.6 test releases.)
The kernel on the machine running the server is RedHat-derived and
does have that sysctl. (I'm hoping it affects already-running
programs, not just ones started after it's set.)
> 2) The /proc/.../maps size suggests you're in that ballpark.
The server has been running for about 26.5 hours now, and the number
of lines in its /proc/.../maps is 56613, which means we're approaching
the default limit.
> 3) Some 2.4.x kernels were known to have problems with properly
> merging mappings. This is probably also aggravated by the
> collectors use of maps against /dev/zero instead of MAP_ANON (which
> I just fixed).
Any chance you could send me a patch for that change?
> I strongly suspect that's what you're running into. I would try
> increasing the limit if you can
I did some quick back of envelope calculations and figured that the
upper bound should be 1048576 (= 2^20 = 2^32 / pagesize), so I set it
> and/or upgrading to a more recent 2.4 kernel.
I don't have enough control over our environment to make that happen
myself, but it's supposed to happen RSN (as soon as a new machine to
run the server arrives).
Thanks for your help.