Saturday, 2 July 2011

Open Source Directory benchmark – part one

Open Source Directory benchmark – part one

Directory servers are critical IT infrastructure components in many enterprise environments. Although many whitepapers about the performance of commercial directory servers and even benchmark tests are to be found online, no real comparison of their open source counterparts exists.

As interns, we recently completed an assignment to benchmark read, write, modify and authentication performance of different Directory servers. This two part blog entry reports on our findings. This first part introduces the directory servers we subjected to our benchmark. The second part contains the benchmark results and conclusions.

OpenLDAP

OpenLDAP is one of the more popular open source directory servers. OpenLDAP is one of the few directory servers that aren’t java based. The version used in our benchmark tests was: 2.4.25.

ApacheDS

ApacheDS is a Java based open source directory server. The server's networking code, MINA (Multipurpose Infrastructure for Network Applications) was designed for pluggable protocol providers of all sorts and not just LDAP. MINA should enable ApacheDS to handle large amounts of concurrency. The version used in our benchmark tests was: 1.5.7.

Fedora389

Fedora389 is a C based open source directory server. Fedora389 is the directory server developed by the same team as the Red Hat Linux distribution, and is a derivation from the original University of Michigan slapd project. The community of the project writes that Fedora389 is able to support enterprises in their directory needs. The version used in our benchmark tests was: 1.1.

OpenDJ

OpenDJ is a java based open source directory server. It is to be expected that this server will have some latency on throughput because it runs in a virtualized environment. This server is easy to configure. OpenDJ is a fork of the Sun Microsystems initiated OpenDS project. The version used in our benchmark tests was: 2.4.2.

Already half-way through our assignment, our sponsor realized that if he wanted to know if open source directory servers are able to compete with commercial of the shelf products, we had to put these products to the test on the same hardware.

Oracle Internet Directory

Oracle Internet Directory is a directory server that uses an Oracle database for storing the data. It uses LDAP v3 for handling operations on the directory server. In our test environment we used the Oracle 11g database, WebLogic 10.3.3, OFDM IDM 11.1.1.3 and java jdk-6u24-linux-x64 components. The version used in our benchmark tests was: 11G Release 2.

Active Directory

Active Directory is a directory server created by Microsoft. It supports LDAP and Kerberos-based authentication. Active Directory also serves as a central location for network administration and security. Active Directory stores all settings and information in a central database (JET). The version used in our benchmark tests was: Active Directory 2008 R2.

Hardware specifications

All directory servers were subjected to testing on two different – rather modest – hardware configurations. The main purpose of using two different configurations was to detect the performance impact of added RAM. The next two tables show the details of each hardware configuration:

Hardware configuration 1 (Mid End Server)

Model

Qosmio X300
PQX32E-028009BT

Processor

Intel(R) Core(TM)2 Extreme CPU Q9300 @ 2.53GHz

Memory

8GiB (2x 4GB 667MHz)

Network

RTL8111/8168B PCI Express Gigabit Ethernet controller 1GB/s

Storage

90GB Solid State Disk

Linux OS

CentOS 5.5 x64

Windows OS

Windows Server 2008 R2

Hardware configuration 2 (High End Server)

Model

Dell Precision M6500

Processor

Intel(R) Core(TM) i7 CPU X 940 @ 2.13GHz

Memory

16GiB (4x 4GB 1333MHz)

Network

NetXtreme BCM5761e Gigabit Ethernet PCIe 1GB/s

Storage

90GB Solid State Disk

Linux OS

CentOS 5.5 x64

Windows OS

Windows Server 2008 R2

Test client

At the start of our assignment, we started looking for a free tool to benchmark a directory server. When we found none we decided to write our own in C#.