Closed miekg closed 7 years ago
Needs this patch for Go DNS: https://gist.github.com/miekg/e80d2eadfea48422178cdbaaf9f8a33f
queryperf gets to 140000:
% make TIME=3 queryperf ~/git/coredns/perf-tests/local-perf master
./bin/queryperf-linux_amd64 -d domain.lst.queryperf -l 3 -s 127.0.0.1 -p 1053
DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $
[Status] Processing input data
[Status] Sending queries (beginning with 127.0.0.1)
[Status] Testing complete
Statistics:
Parse input file: multiple times
Run time limit: 3 seconds
Ran through file: 143281 times
Queries sent: 429845 queries
Queries completed: 429845 queries
Queries lost: 0 queries
Queries delayed(?): 0 queries
RTT max: 0.008106 sec
RTT min: 0.000004 sec
RTT average: 0.000123 sec
RTT std deviation: 0.000156 sec
RTT out of range: 0 queries
Percentage completed: 100.00%
Percentage lost: 0.00%
Started at: Mon May 1 09:33:15 2017
Finished at: Mon May 1 09:33:18 2017
Ran for: 3.000063 seconds
Queries per second: 143278.657815 qps
See this repo for someone added this to Go socket handling. Big thing is to do it portable, don't why upstream Go does not do this.
I'm going to port/fix various things in Go DNS and see how portable things will be.
Now I'm loosing my sanity because a downloaded CoreDNS-006 (from the releases) also shows this speedup... Trying to arrive at those 45K again, just to double check...
Utterly confused :-( https://github.com/miekg/exdns/tree/master/reflect does 170,000 qps on my machine, with, or, without a patched go DNS
Thought about, but I should also have checked in the CoreDNS binary... :/
@miekg sry, I have enabled reuseport according to your PR at https://github.com/coredns/coredns/pull/2149 . But still could not reach 100k QPS.
Is there any special config could archieve this?