I understand that dnsmasq is targeted towards router hardware where
memory/cpu is at a premium.

But I've created a router out of an old PC, and it's got 16GB of RAM, and I
would really love to take advantage of the spam/ad/porn lists from

But the "BASIC" contains 466087 entries!
I am assuming that: address= in a .conf file is automatically being added
to the cache?

So using a file from energized basically overflows my cache, so nothing new
can be cached?

I'm also having dnsmasq die with random:
dnsmasq: segfault at 0 ip error 4 in dnsmasq

I opened a bug report:
...before I figured out the error 4 was out of memory.

So just to use the BASIC list I would need a cache size of 500000.

I see in the code where the 10000 is hard coded:

753 if (daemon->cachesize > 10000)
754    my_syslog(LOG_WARNING, _("cache size greater than 10000 may cause
performance issues, and is unlikely to be useful."));

I could change this and build from source, but my guess is that the way the
cache hashing works even with a multi-core intel and 16GB or ram, it's
still going to slow down my DNS queries?

I looked at cache.c and I'm just not good enough with C to understand if
the cache is being set in a tmp file, or memory, or what?

I get that there are probably better solutions for what I want to do, but I
love dnsmasq and it is so commonly used in the consumer router space that
I'd love to see dnsmasq use a config param to specify it to use xGB of RAM,
and X threads for multi-core CPUs.

If this is something I need to fork off on my own, can someone give me some
C pointers of what files I should focus my learning on?

-Zac Morris
Dnsmasq-discuss mailing list

Reply via email to