zone-file parsing benchmark
This is a zone-file parsing benchmark. We measure complete parsing.
To ensure that we have a reproducible software setup, we suggest you use Docker. Make sure you are running docker or a docker compatible system on your test platform. You do not have to use docker but it makes it easy to ensure that you have the same compiler and dependency. Under Linux, Docker has minimal overhead for computational tasks and is thus suitable for benchmarking.
To enter the Docker shell, while in the project directory, type:
./run_docker.sh bash
The first time you run this command, the image is created which take a few minutes. We are assuming that you have privileged access to the system---as this is useful to get performance counters.
Make sure you have a zone file in the current directory prior to entering the container.
If you use the container, these are taken care of, but otherwise, you need the following:
cmake -B build
cmake --build build
./build/benchmarks/bench se.zone.txt
Example:
$ ./build/benchmarks/bench se.zone.txt
Benchmarking file se.zone.txt
Volume: 1361515551 bytes
simdzonehaswell : 0.81 GB/s ( 0 %) 2.72 GHz 3.38 c/b 11.90 i/b 3.52 i/c
simdzonewestmere : 0.73 GB/s ( 0 %) 2.75 GHz 3.78 c/b 13.76 i/b 3.64 i/c
simdzonefallback : 0.38 GB/s ( 0 %) 2.97 GHz 7.91 c/b 21.76 i/b 2.75 i/c
knot3.3.4 : 0.19 GB/s ( 0 %) 3.16 GHz 17.06 c/b 23.45 i/b 1.37 i/c
Note that the benchmark involves disk access. However, if you have enough memory, we expect that the zone file will remain in disk cache.
An additional string parameter might be used as a filter:
$ ./build/benchmarks/bench se.zone.txt knot
knot3.3.4 : 0.19 GB/s ( 0 %) 3.17 GHz 17.02 c/b 23.45 i/b 1.38 i/c
Within the image, you can profile the benchmark like so:
/usr/lib/linux-tools/6.8.0-35-generic/perf record ./build/benchmarks/bench se.zone.txt haswell
/usr/lib/linux-tools/6.8.0-35-generic/perf report
The result might be as follow:
31.60% parse_rrsig_rdata
27.97% maybe_take
15.28% parse
Or
28.04% maybe_take ▒
15.31% parse_ns_rdata ▒
9.58% maybe_take_contiguous ▒
3.29% parse_rrsig_rdata
You may want to check you disk speed:
sudo hdparm -Tt /dev/sda
free -h