Belelendültem a teljesítmény-tesztelésbe. Mivel nem találtam komolyabb összehasonlító táblázatot és konkrét benchmark programot sem authoritativ DNS-szerverekre, így az OpenBenchPack projekt keretében készítettem pár python programot erre a feladatra. Továbbá, ha már így alakult mérést is készítettem velük a Debian Sid terjesztésben elérhető összes DNS szerverrel és különféle backendekkel.
A DNS-szervereket egy XEN virtuális gépben futtattam, ami 256M memóriával rendelkezett és a tesztek ideje alatt az egyetlen virtuális domain volt a dom0 mellett a host rendszeren. A hoszt rendszer maga egy egy processzoros Intel Pentium 4 3.00GHz volt 512Mb RAM-al, Intel 82801EB (ICH5) Serial ATA 150 vezérlővel. A mérések során kétféle klienst használtam. Az egyikükkel (AMD Athlon XP 2400+, 512Mb RAM) a relatív sebesség teszteket, másikukkal (Dell PowerEdge 2650, Dual Intel Xeon CPU 2.00GHz, 1GB RAM) pedig a terhelés teszteket végeztem. Mindkét kliens a szerverrel 100 Mb/s-os switchelt hálózaton keresztül csatlakozott.
Minden DNS-szervet közel alapértelmezett konfigurációval használtam (részletek tekintetében lásd az eredmények alatti megjegyést). Nyilvánvalóan ezzel egy lehetséges hibafaktort, az alapértelmezett beállítások jóságát, tudatosan belevittem a tesztbe. Ennek legfőbb oka, hogy jómagam nem értek egyenrangúan mindegyik DNS-szerverhez és a mögötte álló adatbázisokhoz. Természetesen éles rendszereken számtalan paraméter van amit hangolni lehet és kell.
A tesztek ideje alatt a DNS-szerver illetve egyes esetekben az adatbázis szerverek mellett csak az ssh hálózati szolgáltatás futott, a cron és az at is le lett állítva. Mindegyik kombinációban a DNS-szerverek adatbázisát 1000 zónával, minden zónában 254 db A rekorddal töltöttem fel. Az egy klienses relatív teljesítmény tesztek esetén a kliens minden zónából véletlenszerűen választott 100 A rekord lekérdezést végzett. Összesen tehát 100.000 lekérdezést kapott a DNS-szerver az első számú kliens géptől. A második tesztben a ugyanezt a lekérdezés sorozatot 20 párhuzamos kliens végezte el a második számú kliens gépről. Közben top és ps parancsokkal mértem a CPU és virtuális memória felhasználást.
Minden tesztfuttatást ötször ismételtem az eredmények az öt futtatás átlagát mutatják. Nagy szórást nem tapasztaltam ez eredményekben a futások között.
Megítélésem szerint az eredmények elsősorban kis, közepes DNS-szerverek esetén tekinthetők relevánsnak.
| DNS server | relatív sebesség | virtuális memória felhaszálás | cpu felhaszálás |
|---|---|---|---|
| BIND 9.3.2 | 100 % | 58 M | 12 % |
| BIND + OpenLDAP (2.3.24) backend | 40 % | 34 M (139 M LDAP) | 45 % (55% LDAP) |
| PowerDNS 2.9.20 + BIND zone file backend | 136 % | 98 M | 5 % |
| PowerDNS + LDAP backend | 64.5 % | 74 M (91 M LDAP) | 24 % (12 % LDAP) |
| PowerDNS + MySQL (5.0.22) backend | 64.5 % | 76 M (117 M MySQL) | 15 % (15 % MySQL) |
| LDAPDNS 2.06 | 36.7 % | na. | na. |
| MaraDNS 1.2.07.5 | 134 % | 124 M | 3.5 % |
| tinydns (djbdns) 1.05 | 87.7 % | 1.7 M | 24 % |
| nsd 2.3.3 | 129 % | 31 M | 2 % |
Megjegyzések az eredményekhez:
Erdemes volna megmerni a BIND 8.4.7-et. Allitolag memoriabol kevesebbet eszik. Ezert hasznaljak meg mindig a ROOT nevszerevereknel.