[GC] "map remapping failed" in long-running server

Kenneth C. Schalk ken@xorian.net
Wed, 12 Nov 2003 13:03:33 -0500 (EST)

Quoting "Boehm, Hans" <hans_boehm@hp.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
to that.

> 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.