Supporting large caches (> 4GB) in BIND?

Shumon Huque shuque at isc.upenn.edu
Mon Feb 15 16:11:09 UTC 2010


I'm trying to support large caches with BIND on our campus
resolvers, but have run into several constraints. The
machines in question are Solaris 10/ultrasparc, running
BIND 9.6.1-P3.

It appears that 32-bit versions of BIND on Solaris 10 can't
exceed 2GB without crashing. I see other reports of this issue 
posted earlier to bind-users:

  https://lists.isc.org/pipermail/bind-users/2009-June/076529.html

Shouldn't they be able to approach 4GB? I can write small
programs on the same machine that can allocate close to 4GB
on the heap without issue. The core files from the crashing
nameserver report that a KILL signal was received, but I
haven't figured out from who. There are no data/stack resource
limits imposed on the process by the OS.

I've recompiled the nameserver as a 64-bit program and confirmed
that they can now exceed 2GB. But I'd like to be able support
much larger cache sizes. We have some CS researchers on campus
that are making heavy use of our recursive resolvers. I'd like
to support their research but I need to significantly increase
our cache size to do so, and at the same time not allow the 
nameserver to eat up all of the system RAM (we currently have 
16GB per server).

But there is a hardcoded limit of 4GB (ISC_UINT32_MAX) for the
max-cache-size parameter:

bin/named/server.c:

                if (value > ISC_UINT32_MAX) {
                        cfg_obj_log(obj, ns_g_lctx, ISC_LOG_ERROR,
                                    "'max-cache-size "
                                    "%" ISC_PRINT_QUADFORMAT "d' is too large",
                                    value);
                        result = ISC_R_RANGE;
                        goto cleanup;
                }
                max_cache_size = (isc_uint32_t)value;

If I omit max-cache-size or set it to 0, then the implication from
the documentation (ARM) is that BIND sets no limit and uses as much
as it can. Is this correct? Or is there still an effective 4GB limit?

And is there no way to set an explicit cache size limit >4GB?

Thanks!
--Shumon.



More information about the bind-users mailing list