[Android Apps and Games] tdhite:
Thanks for the input! And the About box is, well, not done :o and it really needs to get done. I'll make one this weekend. I'm a horrible UI designer, frankly, but good at the service layers. I have a buddy I work with I'm subscribing in to DnsQache so he can really upgrade the UI experience. World class guy in that respect, so just hang in for that kind of work, but a reasonable About box I'll do.

As or DNS effect, truth be told it's related to the version of Android. Generally, on Jelly Bean (more tightly 4.2 and above), the guts of the system (libc for those savvy with the kernel/system) performs caching already for both Android (the zygote process and all its children) and the general system apps. In fact, changing /etc/resolv.conf and system properties (net.dns*), both of which DnsQache does for older Android versions), has virtually no effect in newer Android versions. In older versions (pre 4.2-ish -- depends on the vendor) those changes make a dramatic difference.

So here's some guidelines for Android versions pre Jelly Bean (again, tune to your liking given the vendor releases, but generally):

1) When using *just* your phone (no tethering), you can be relatively confident that you need no caching (set the max cache size to 0 (zero)). There's not that much system level hits on DNS.

2) When tethering the cache matters a *lot* because all tethered users go through system level work -- meaning zygote doesn't control their network access activities, the system does. So in that case, turn the cache up. Honestly, 300 is probably find, but 1000 is ok too. For some additional info, on my phone, I create VNC sessions via chroot copies of Linux (Debian distributions). Those VNC sessions, in fact, are system level work, so when running older Android versions, I make sure the VNC (chrooted linux) sessions have their /etc/resolv.conf point to "nameserver 127.0.0.1" so I get the full effect of DNS caching.

Now for Jelly Bean and above users:

1) The difference here is, frankly, caching could be superfluous. The libc was changed for Jelly Bean to truly subvert DNS activity (took a lot of work in DnsQache to steal it back). Some surmise Google made those changes to protect its ad revenue, some say otherwise. I don't really care, just want control of DNS because I don't like my carrier peering into where I'm going and what I'm doing.

What do I do? I leave the cache at 300 for my day-to-day Sprint HTC One on ViperROM 3.5 (Sense) -- relatively new Android and JB doesn't need a whole lot of DNS caching help -- mostly redirection and handling DNS records that set a time to live (TTL) longer than Android's internal cache timeout. When running (testing, playing, hacking the kernel) on my Photon 4G, I keep the cache at 500, but sometimes bump it to 2000 (if I'm doing VNC sessions, WebTop or other stuff that uses the system).

I think a nice rule of thumb is try 200 or 300 on JB and above, see how that works for you. On older Android (less than Jelly Bean), give it some room, like 1000, and see how that works, tune if necessary. The cache data is not all that much, so you're not stealing all that much RAM.

Hope that helps.