xref: /minix3/external/bsd/bind/dist/contrib/queryperf/README (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek
2*00b67f09SDavid van MoolenbroekId: README,v 1.1 2001/07/12 02:02:09 gson Exp
3*00b67f09SDavid van Moolenbroek
4*00b67f09SDavid van MoolenbroekThis is queryperf, a DNS server query performance testing tool.
5*00b67f09SDavid van Moolenbroek
6*00b67f09SDavid van MoolenbroekIt is primarily intended for measuring the performance of
7*00b67f09SDavid van Moolenbroekauthoritative DNS servers, but it has also been used for measuring
8*00b67f09SDavid van Moolenbroekcaching server performance.  This document describes the use of
9*00b67f09SDavid van Moolenbroekqueryperf for authoritative server performance testing.
10*00b67f09SDavid van Moolenbroek
11*00b67f09SDavid van Moolenbroek
12*00b67f09SDavid van MoolenbroekBuilding
13*00b67f09SDavid van Moolenbroek
14*00b67f09SDavid van MoolenbroekTo build queryperf, just do
15*00b67f09SDavid van Moolenbroek
16*00b67f09SDavid van Moolenbroek  sh configure
17*00b67f09SDavid van Moolenbroek  make
18*00b67f09SDavid van Moolenbroek
19*00b67f09SDavid van Moolenbroek
20*00b67f09SDavid van MoolenbroekThe test environment
21*00b67f09SDavid van Moolenbroek
22*00b67f09SDavid van MoolenbroekIt is recommended that you run queryperf and the name server under
23*00b67f09SDavid van Moolenbroektest on separate machines, so that the CPU usage of queryperf itself
24*00b67f09SDavid van Moolenbroekdoes not slow down the name server.  The two machines should be
25*00b67f09SDavid van Moolenbroekconnected with a fast network, preferably a dedicated 100baseT
26*00b67f09SDavid van Moolenbroeksegment.  Testing through a router or firewall is not advisable.
27*00b67f09SDavid van Moolenbroek
28*00b67f09SDavid van Moolenbroek
29*00b67f09SDavid van MoolenbroekConfiguring the server
30*00b67f09SDavid van Moolenbroek
31*00b67f09SDavid van MoolenbroekThe name server under test should be set up as an authoritative
32*00b67f09SDavid van Moolenbroekserver, serving one or more zones similar in size and number to
33*00b67f09SDavid van Moolenbroekwhat the server is expected to serve in production.
34*00b67f09SDavid van Moolenbroek
35*00b67f09SDavid van MoolenbroekBe sure to turn off recursion in the server's configuration
36*00b67f09SDavid van Moolenbroek(in BIND 8/9, specify "recursion no;" in the options block).
37*00b67f09SDavid van MoolenbroekIn BIND 8, you should also specify "fetch-glue no;"; otherwise
38*00b67f09SDavid van Moolenbroekthe server may attempt to retrieve glue information from the
39*00b67f09SDavid van MoolenbroekInternet during the test, slowing it down by an unpredictable
40*00b67f09SDavid van Moolenbroekfactor.
41*00b67f09SDavid van Moolenbroek
42*00b67f09SDavid van Moolenbroek
43*00b67f09SDavid van MoolenbroekConstructing the input file
44*00b67f09SDavid van Moolenbroek
45*00b67f09SDavid van MoolenbroekYou need to construct a queryperf input file containing a large and
46*00b67f09SDavid van Moolenbroekrealistic set of queries, on the order of ten thousand to a million.
47*00b67f09SDavid van MoolenbroekThe input file contains one line per query, consisting of a domain
48*00b67f09SDavid van Moolenbroekname and an RR type name separated by a space.  The class of the
49*00b67f09SDavid van Moolenbroekquery is implicitly IN.
50*00b67f09SDavid van Moolenbroek
51*00b67f09SDavid van MoolenbroekWhen measuring the performance serving non-terminal zones such as the
52*00b67f09SDavid van Moolenbroekroot zone or TLDs, note that such servers spend most of their time
53*00b67f09SDavid van Moolenbroekproviding referral responses, not authoritative answers.  Therefore, a
54*00b67f09SDavid van Moolenbroekrealistic input file might consist mostly of queries for type A for
55*00b67f09SDavid van Moolenbroeknames *below*, not at, the delegations present in the zone.  For
56*00b67f09SDavid van Moolenbroekexample, when testing the performance of a server configured to be
57*00b67f09SDavid van Moolenbroekauthoritative for the top-level domain "fi.", which contains
58*00b67f09SDavid van Moolenbroekdelegations for domains like "helsinki.fi" and "turku.fi", the input
59*00b67f09SDavid van Moolenbroekfile could contain lines like
60*00b67f09SDavid van Moolenbroek
61*00b67f09SDavid van Moolenbroek  www.turku.fi A
62*00b67f09SDavid van Moolenbroek  www.helsinki.fi A
63*00b67f09SDavid van Moolenbroek
64*00b67f09SDavid van Moolenbroekwhere the "www" prefix ensures that the server will respond with a
65*00b67f09SDavid van Moolenbroekreferral.  Ideally, a realistic proportion of queries for nonexistent
66*00b67f09SDavid van Moolenbroekdomains should be mixed in with those for existing ones, and the lines
67*00b67f09SDavid van Moolenbroekof the input file should be in a random order.
68*00b67f09SDavid van Moolenbroek
69*00b67f09SDavid van Moolenbroek
70*00b67f09SDavid van MoolenbroekRunning the tests
71*00b67f09SDavid van Moolenbroek
72*00b67f09SDavid van MoolenbroekQueryperf is run specifying the input file using the "-d" option, as
73*00b67f09SDavid van Moolenbroekin
74*00b67f09SDavid van Moolenbroek
75*00b67f09SDavid van Moolenbroek  queryperf -d input_file -s server
76*00b67f09SDavid van Moolenbroek
77*00b67f09SDavid van MoolenbroekThe output of queryperf is mostly self-explanatory.  Pay attention to
78*00b67f09SDavid van Moolenbroekthe number of dropped packets reported - when running the test over a
79*00b67f09SDavid van Moolenbroeklocal Ethernet connection, it should be zero.  If one or more packets
80*00b67f09SDavid van Moolenbroekhas been dropped, there may be a problem with the network connection.
81*00b67f09SDavid van MoolenbroekIn that case, the results should be considered suspect and the test
82*00b67f09SDavid van Moolenbroekrepeated.
83