Maintained by: NLnet Labs

[Unbound-users] Packets lost when multi threading

Leo Baltus
Fri Dec 7 14:14:09 CET 2012


Op 07/12/2012 om 12:38:27 +0100, schreef W.C.A. Wijngaards:
> On 12/07/2012 12:20 PM, Leo Baltus wrote:
> > Op 07/12/2012 om 11:50:04 +0100, schreef W.C.A. Wijngaards:
> >> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
> >> 
> >> Hi Leo,
> >> 
> >> On 12/07/2012 11:29 AM, Leo Baltus wrote:
> >>> Hi,
> >>> 
> >>> When I run unbound multi-threaded perf keeps reporting
> >>> 'Packets lost', but when it runs single threaded it does not.
> >>> 
> >>> $ perf -d 10 -a 'www.omroep.nl IN A' 2a02:458:101:31::34 qps: 
> >>> 29262.9 qps: 31986.4 qps: 32167.5 qps: 32479.7 qps: 33064.3
> >>> qps: 32174.4 qps: 31408.1 qps: 35887.4 qps: 37471.3 qps:
> >>> 35364.5 overall time: 	10.0001 sec Packets lost: 	732
> >>> 0(NOERROR): 	331249 replies average qps: 	33124.5
> >>> 
> >>> This is unbound-1.4.18 with openssl-1.0.0j, ldns-1.6.16 and 
> >>> libevent-2.0.21-stable running on a linux-2.6.27.59 kernel.
> >>> 
> >>> It even reports this when perf is run on the host running
> >>> unbound.
> >>> 
> >>> Is this a known issue?
> >> 
> >> No.  Can you try setting so-rcvbuf higher (4m) ?  It may be lost 
> >> simply because it is out of buffers.  There is nothing intrinsic
> >> in unbound that makes it drop packets in this setup; it must be
> >> the OS.
> >> 
> > 
> > It makes no difference.
> > 
> > here's the multithreading part of my unbound.conf:
> > 
> > num-threads: 4 outgoing-range: 8192 num-queries-per-thread: 4096 
> > so-rcvbuf: 4m
> > 
> > Also 'netstat -su' does not report any increments on 'receive
> > errors' or RcvbufErrors.
> 
> Perhaps perf fails to count them?  They may still be in transit, and
> perf stops abruptly, counts them as lost?  tcpdump may be able to
> count the number of packets that transited and where those 732 packets
> went?
> 

I think you are right.

Once perf stopped receiving, the client started to send 'ICMP dest.
unreachable'. If I add the number of packets, they get pretty close to the
number of packets lost reported by perf.

So maybe perf should just stop sending after $duration (or SIGHUP) and
wait a while for the last packets to arrive?

-- 
Leo Baltus, internetbeheerder                         /\
NPO ICT Internet Services                            /NPO/\
Sumatralaan 45, 1217 GP Hilversum, Filmcentrum, west \  /\/
servicedesk at omroep.nl, 035-6773555                    \/