Greetings to all,

here is a followup of an older thread [1] regading the use of OpenBSD in
a large scale DNS anycast setup. To make the long story short, OpenBSD
fails to meet our resolving perfomance needs for the time being. The
main issue (from my understanding) is the lack of kernel-level thread
support (which is something hopefully to be addressed really soon with
rthreads).  
I stress tested BIND on Linux and OpenBSD in a VM based lab environment
using Nominum's resperf [2] tool (details below).
Our current numbers in the resolving customer-facing infrastructure are
around 10K queries/second at peak. All servers currently (linux based)
utilize more than a CPU to accomodate the load. 
I would have liked to introduce OpenBSD in my working environment
especially for the excellent networking features, but the current
performance numbers are prohibitive in our case. It will at least
have to wait until rthreads support is part of a release (and of course
I am more than willing to test snapshots if someone can direct me as to
which I should test).

The rest are the details (only for interested readers) :)

The lab environment consisted of two VMs with identical configuration on
top of VMWARE's ESXi 4.1.0. Each VM has 2 vCPUs (Intel Xeon X5650), 8GB
RAM and 2 NICs (BIND listens on the first interface and forwards all
resolving traffic in the second).

The systems tested were CentOS 6.2 and OpenBSD 5.1 with the default BIND 
(bind-9.7.3-8.P3.el6_2.2.x86_64 for CentOS, base system's BIND for
OpenBSD). 

kzorba@dmeg-dns1: ~ ->sysctl hw
hw.machine=amd64
hw.model=Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
hw.ncpu=2
hw.byteorder=1234
hw.pagesize=4096
hw.disknames=cd0:,sd0:6f2e8c0759d7fce1,fd0:
hw.diskcount=3
hw.sensors.acpiac0.indicator0=On (power supply)
hw.sensors.vmt0.timedelta0=-5971.426309 secs, OK, Tue May 29
12:04:19.156
hw.cpuspeed=2659
hw.vendor=VMware, Inc.
hw.product=VMware Virtual Platform
hw.version=None
hw.serialno=VMware-56 4d ea ff 3c cb c5 ea-3a 4d e9 45 d9 73 01 50
hw.uuid=564deaff-3ccb-c5ea-3a4d-e945d9730150
hw.physmem=8588820480
hw.usermem=8588804096
hw.ncpufound=2
hw.allowpowerdown=1
 
I have Gbps bandwidth on all interfaces, so bandwidth cannot affect the
measurements. In all tests, I used an hour's real captured queries
traffic from our production resolvers.

The test scenaria were:

- 3 runs with resperf's default options with a BIND restart after each
  run to start with a clear cache

- 3 more runs with the options -m 20000 -r 120 (that is go to at top
  20K/sec queries and reach that after 2 minutes) followed by restarts
  after every run

- 1 run with default options followed by an extra run without restart
  (cache utilization)

- 1 run with the options -m 20000 -r 120 followed by an extra run
  without restart (cache utiliztaion)

- 2 runs giving a constant 15 minutes load to the systems with resperf's
  options -c 900 -m 20000 -r 120 -i 5
  OpenBSD in these tests, failed to follow the load and the option I
  used to finish the test succesfully was -m 10000 (that is in my lab
  setup it would accomodate a steady flow of 10K queries/sec at most)

In all cases, as you might expect OpenBSD had half (or less than half)
the performance of Linux. My outcome is the thread support. I really hope
I am not missing something else.

Any input highly welcome.
Regards,

Kostas

[1] http://marc.info/?l=openbsd-misc&m=132395738031428&w=2
[2] http://www.nominum.com/resources/measurement-tools

Reply via email to