[dns-operations] DNS server benchmarking sanity check

Hannes Frederic Sowa hannes at stressinduktion.org
Tue Aug 16 09:36:14 UTC 2016


On 15.08.2016 04:32, Robert Edmonds wrote:
> Mark Delany wrote:
>> The best absolute UDP performance I could achieve was with one thread
>> per CPU with their respective socket bound to a unique port (53, 54,
>> 55, etc). This setup was able to consume vastly more pps than any
>> combination accepting on just a single port. Not useful from a DNS
>> server perspective, but this does suggest some serialization/locking
>> on a port basis in both FBSD and Linux.
> 
> Did you happen to test a unique port vs. a unique IP address? I.e., it
> sounds like you tested *:53, *:54, *:55, etc. What about 192.0.2.1:53,
> 192.0.2.2:53, 192.0.2.3:53, etc.?

In general we don't hash (and also tell networking cards to not hash)
UDP port numbers into rx hashes. Reason for that is that we don't want
to have reordering of fragments in regard to ordinary UDP packets from
the same stream. You can easily enable that on the NIC via:

# ethtool -n eth0 rx-flow-hash udp4
UDP over IPV4 flows use these fields for computing Hash flow key:
IP SA
IP DA
# ethtool -N eno2 rx-flow-hash udp4 sdfn
# ethtool -n eno2 rx-flow-hash udp4
UDP over IPV4 flows use these fields for computing Hash flow key:
IP SA
IP DA
L4 bytes 0 & 1 [TCP/UDP src port]
L4 bytes 2 & 3 [TCP/UDP dst port]

Probably it is safe to do so, some multicast applications started to
break on Linux, thus it wasn't made the default.

Bye,
Hannes




More information about the dns-operations mailing list