“You can't optimize it until you can measure it”
A little-known feature of Windows (which has been present ever since Windows version 1.0) is the so-called “System Menu.” It is accessed on any Windows application by either clicking the left mouse button on the application window's icon — at the far upper-left of the application's window — or by clicking the right mouse button anywhere on the application's title bar.
Most applications' System Menus present a relatively boring set of commands having to do with managing the application's window; Move, Size, Restore, Maximize, Minimize, Close, etc. And since there are other more obvious ways to do all of those things, the System Menu has historically received very little attention. However, in the case of many of GRC's applications, which are not complex enough to require a traditional set of Window menus running along the top left, the System Menu provides a handy place for us to tuck our applications' “power-user features” with which we didn't wish to clutter and confuse the main application.
As you can see below, the DNS Benchmark's System Menu is chock full of goodies:
Most of the options on the Benchmark's System Menu will already be familiar to you if you have previously studied the Features & Operation Walkthrough page. For the sake of completeness, and to create a comprehensive reference for the Benchmark's System Menu, those descriptions will be duplicated here.
- Self Screen Capture...
To help with sharing the Benchmark's display, or documenting some behavior that might be confusing, the Benchmark includes a built-in self screen capture system. After a short delay to allow the menu to disappear fully, the Benchmark's window contents will be captured. You will then be presented with a dialog box to specify the name and location of the saved image file. You can save the image in either compressed PNG format, or as a larger Windows BMP file.
Note: Since many Linux/WINE systems are not configured with a System Menu, a self screen capture can also be triggered (also in Windows) by simultaneously depressing the keyboard's Control, Alt, and Shift keys then (while still depressing those keys) clicking the mouse's left button in any unused area of the application's window, such as the large DNS Benchmark title. If that doesn't work under Linux/WINE, the Linux Alt + Printscreen can be used to capture the application's window.
- Add System's Nameservers
This menu command immediately adds the nameservers that are currently configured for use by this system to the list of nameservers being benchmarked. Note that this is automatically done at the start-up of the Benchmark unless it is inhibited by a command-line parameter. Therefore, this menu command can be used at any time to restore the system nameservers, which may have been removed by any means, to the benchmarking list.
- Add Default Nameservers
The Benchmark contains a default built-in internal list (which is updated from time to time in new Benchmark versions, as needed, to keep the list current) of generally useful publicly available DNS resolving nameservers. The list has been chosen so that any of the nameservers might be worth considering as alternatives or additions for your system or network gateway. This menu command immediately adds these nameservers to the Benchmark's list. Note that as with the “System” resolvers, all of these built-in nameservers are added to the Benchmark's list, by default, at start-up.
- Add .INI file Nameservers
Personal lists of additional nameservers can be created for addition or removal to and from the Benchmarks server list. This menu command prompts for a file containing a list of nameservers to be added to the Benchmark's current list. See the command-line pages for information about the file's IP list format.
- Remove System's Nameservers
As you can certainly guess, this menu command performs the reverse function of the “Add System's Nameservers” command: It removes any of the system's currently configured nameservers from the Benchmark's IP server list.
- Remove Default Nameservers
While this menu command does remove any of the default built-in nameserver IPs from the list, it does not remove any that are also currently in use by the system. So if, for example, the system was configured to use the OpenDNS nameservers that are also present in the Benchmark's built-in list, this menu command will not remove those from the list.
- Remove .INI file Nameservers
Given a file containing an IP list provided by the user, this command removes any nameservers appearing in the list that are not also system nameservers.
- Remove All Nameservers
This quickly and completely clears the entire list of benchmarked nameservers, removing every nameserver regardless of it source.
- Add / Remove Individual Nameservers
This command is the equivalent of pressing the “Add/Remove” button on the main “Nameservers” page. It presents the “Edit DNS Server IPs” dialog to allow manual entry of nameservers to add or remove from the Benchmark's list. The dialog also contains buttons for performing many of the commands presented here.
- Save Nameservers to DNSBENCH.INI
The DNSBENCH.INI file is special. When the DNS Benchmark is started, it checks the executable file's disk directory for an .INI file having the same name as its own executable (.EXE) file. This may not be “DNSBENCH” if you have renamed the Benchmark's executable file. For example, if you had renamed the program DNSB.EXE, then the Benchmark would check for the file DNSB.INI upon start-up. If such a similarly-named file is found, the list of nameserver IP addresses it contains will entirely replace the list of built-in nameservers the application normally loads when starting. This provides a convenient means for building your own nameserver IP list and automatically using it by default.
This menu option allows you to quickly and easily save the Benchmark's current list of nameserver IPs to a properly named file in the same directory as the program. Then, as long as that file is present, it will override the Benchmark's internal list to provide the IP addresses to be benchmarked. You might wish to do this, for example, after manually removing any “dead” nameservers and any others you don't want to waste time benchmarking in the future.
Note also that the custom nameserver building process creates or re-creates this file, automatically filling it with the top 50 best-performing resolvers detected during the scan.
- Save Nameservers to .INI File
The list of nameservers currently appearing in the Benchmark's list is written to a file whose name is provided by the user. This will be a simple list of IP addresses, one per line, followed by the nameserver reverse DNS (rDNS) name, if any. For documentation purposes, comments of any kind may later be added after each line's IP address. This is similar to the command above, except that the file can be named anything the user wishes.
- Set Graph Scale:XXX msec/auto
This menu item shows both the current full-scale chart timing value and the current scaling mode; auto or fixed (manual). If this command is selected, the “Set Bargraph Scale” dialog box will be presented.
- Re-Verify Internet Connectivity
When the Benchmark is initially started it checks for connectivity to the Internet. This is useful since it might trigger the system's local outbound personal firewall if one is present. This re-verification command will allow you to update the firewall's settings, then re-test the Benchmark's ability to reach the Internet.
Additionally, the connection verification process initiates the nameserver characterization process. Whenever a new nameserver is added, it is individually characterized after being added to the list. But there may be times when you will wish to manually force a re-characterization of all listed nameservers — such as after changing the setting of the “Test DNSSEC Authentication” option which is also contained on this menu.
- Build Custom Nameserver List
When a custom nameserver list is not already being used, the Benchmark will automatically suggest that one should be built whenever the benchmark test is completed. This menu option allows a custom nameserver list to be built, or rebuilt, at any time. As mentioned aboce, the list is automatically saved into the “DNSBENCH.INI” file so that it will be retained and automatically used whenever the Benchmark is performed in the future.
- Export last results to CSV file
Once a benchmark test has been run, a “spreadsheet” of fully detailed results (containing more detail than any other benchmark view) can be exported in CSV (Comma Separated Value) format. The DNS Benchmark's CSV exportation is fully language localized. It will export using the proper field and numeric separators for the system's locale. This fixed-format file can be archived, imported into spreadsheets, or processed by automated tools.
- Save Page's Text to File
This menu command will be enabled when any of the three textual pages (“Introduction”, “Tabular Data” or “Conclusions” — not the “Nameservers” graphics page) is selected and no specific text has been marked and selected on the page. This command prompts for a filename and location, then saves all of the text on the page to the indicated file in either RTF (Rich Text Format) or TXT (Plain Text) format. If RTF is used the text's font choices, coloration, size, and formatting will be preserved in the saved file.
- Save Selected Text to File
This menu command will be enabled when any of the three textual pages (“Introduction”, “Tabular Data” or “Conclusions” — not the “Nameservers” graphics page) is selected and some specific text has been marked and selected on the page. This command prompts for a filename and location, then saves the marked and selected text on the page to the indicated file in either RTF (Rich Text Format) or TXT (Plain Text) format. If RTF is used the text's font choices, coloration, size, and formatting will be preserved in the saved file.
- Save Page's Image File
This menu command will be enabled when the “Nameservers” tab is selected since the four sub-tabs of the Nameservers page — Name, Owner, Status, and Response Time — are all graphical images and are not textual. This command will prompt for a filename and location, then save the entire, currently selected “full length” image to the indicated file in either compressed (and much smaller) PNG format, or much larger Windows BMP bitmap format. By “full length” we mean that even though you may only be able to view a small portion of the entire scrolling image, the saved image will contain the full length image of the data.
- Sort by Cached Performance
Shows the current sorting choice and, when selected, sorts by cached performance first, uncached performance second, and dotcom performance third.
- Sort by Uncached Performance
Shows the current sorting choice and, when selected, sorts by uncached performance first, cached performance second, and dotcom performance third.
- Test DNSSEC Authentication
DNSSEC is the “DNS SECurity” standard for securely (cryptographically) authenticating DNS data within the domain name system to prevent alteration and forgery. Since producing DNSSEC replies takes additional computation time (for the cryptography) benchmarking this aspect of a DNS server's performance can be crucial. However, at the time of this Benchmark's release, a surprising number of publicly available resolvers catastrophically fail when presented with valid DNSSEC-enabled queries. Therefore, the Benchmark's use of DNSSEC is disabled by default. This option “toggles” (enables and disables in turn) the Benchmark's use of DNSSEC.
After changing this setting you will be prompted and advised to re-characterize the nameservers under the new DNSSEC setting by re-verifying Internet connectivity.
If you have studied this page and the preceding Features & Operation Walkthrough page, you will now have a very good idea of the operation and capabilities of the DNS Benchmark.
For real power-users, the Benchmark's command-line features — described on the Command-Line Operation Reference page — provide even more power and flexibility, as well as the ability to fully automate the Benchmark's operation. That would be your next logical step if you're still wanting to dig deeper.