BIND 10 #245: Meaure performance of various "receiptionist" designs
BIND 10 Development
do-not-reply at isc.org
Tue Jul 13 15:42:25 UTC 2010
#245: Meaure performance of various "receiptionist" designs
---------------------------+------------------------------------------------
Reporter: shane | Owner: stephen
Type: task | Status: new
Priority: major | Milestone: 06. 4th Incremental Release
Component: recurser | Resolution:
Keywords: | Sensitive: 0
Estimatedhours: | Hours:
Billable: 1 | Totalhours:
Internal: 0 |
---------------------------+------------------------------------------------
Comment(by dhankins):
How the receiving end of message queues wake up is critical. Since we are
using a message queue library, some inspection may be required.
In my earlier experiments with a shared memory ring buffer implementation,
the only way I discovered I could hold the receiver asleep and wake up (as
opposed to being awake all the time polling the ring buffer for contents)
was on a "negative lock" using a semaphore. The reader locks a semaphore
if the ring buffer is empty, possibly going to sleep; the writer unlocks
the semaphore when data is put in the ring buffer, causing the reader to
wake up more or less instantaneously.
The other solutions to sleep the reader which I attempted all resulted in
the the queue being over-run by burst traffic from the UDP socket; the
ring buffer would quickly be completely filled over the smallest periods
of sleep. Except on our Solaris lab boxes where for some reason UDP read
performance was horrendous, so the ring buffer mechanic showed no
difficulty in exceeding UDP read performance.
Note that such synchronous design may not be practical particularly in
recursive nameserver design, where the process likely will need to handle
retransmission behaviour, and will probably be governing other UDP sockets
for its own query/replies. A message queue implementation that is
compatible with select(2) like the POSIX message queue or similar may also
be worth investigation.
However in authoritative DNS and DDNS (and therefore most DHCP use cases)
where typically the work is to reply to individual messages, this issue
with synchronous design isn't as obvious (may not be an issue).
HTH.
--
Ticket URL: <http://bind10.isc.org/ticket/245#comment:3>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list