Scale BIND over multiple kernels effectively

JINMEI Tatuya / 神明達哉 Jinmei_Tatuya at isc.org
Thu Apr 30 22:05:49 UTC 2009


At Thu, 30 Apr 2009 11:46:05 -0700,
Jonathan Petersson <jpetersson at garnser.se> wrote:

> I've been running some dnsperf tests on a couple of servers I have
> resulting in some interesting behaviors.

[...]

> Any input would be valuable, thanks!

Roughly summarizing (ignoring many details), what you showed is:

2 threads on 2 core: 45kqps
4 threads on 4 core: 108kkqps
8 threads on 4 core + HT: 75kqps
16 threads on 8 core + HT: 35kqps

correct?

There are several possible explanations.

First, you may be using too many threads when you see lower
performance.  Even though recent versions of BIND9 tries very hard
eliminating inter-thread contention, it cannot completely be free from
some inherent overhead with the use of multiple threads, which could
be revealed as you increase the number of threads.  From my past
experiences threaded BIND9 scales pretty well with at least up to 4
threads (on 4 cores), and I believe it also works well with additional
1-2 threads.  I'm not sure about 8 threads, and I've heard a report of
performance degradation at around this number.

Second, again, from my past personal experiences, HT never helped
BIND9; rather, it often worsened the performance.  I've not figured
out why; if it really works as the manufacturer claims (e.g., using a
single core efficiently with multiple threads when one thread stalls
due to memory access), it could actually improve overall performance.
But empirical experiments have always denied the theoretical positive
effect.  Note: I've not tried Intel's latest "hyper threading" (Now
called SMT), so my experience was limited to older versions of HT.

---
JINMEI, Tatuya
Internet Systems Consortium, Inc.



More information about the bind-users mailing list