Slapd Analysis under Query Size Aspects
This page should present the result of the performance analysis on a LDAP server under the the aspect of parallel requests for certain queries with a fixed datasize.
Background
The current observation of the
BDII (a top level Instance of the Grid Information System) shows that requests from clients (e.g. the Grid ResourceBroker) can't be handled fast enough and timeouts occur which affect the overall performance of the Grid. To find out how much load one top level instance of the
BDII can stand, this test has been created.
The results show the limits of the current realization of the
BDII instance installed at CERN and should give ideas for a future reimplementation.
Test Environment
The LDAP server is an OpenLDAP server (slapd V 2.0.27 ) installed on a Intel(R) Xeon(TM) CPU 2.40GHz with 1GB of RAM. The size of the LDAP database is 20MB.
The tests are realized by a bunch of scripts which execute a ldapsearch in parallel on several machines and which can be found in the CVS. The maximum number of parallel requests are 90. For this, the
wassh
( see
here
) command was used. One should consider that this test should only give an approach to the performance for parallel requests. A precise scenario would include one request per machine. This would mean using 90 machines which execute one query at exactly one(!) time. This would be a far too complex scenario and is not neccessary. However, for an approach of the performance of the slapd the scripts which were created are sufficient.
The Queries
It has been decided that a view on the performance of the OpenLDAP has to be done by measuring how many requests can be handled for a certain queried datasize. These are the query datasizes which are used in this test:
no_result (query failure 0KB), 1KB,10KB, 150KB, 370KB, 1MB, 2MB, 3MB, 5MB, 8MB, 10MB, dump (full dump of the ldap db, 20MB)
Each query represents the most used one by the users. This gives a more realistic view on how the load of the real LDAP instance (lcg-bdii.cern.ch) is.
Results
After gathering the data, the following diagrams were created using 'gnuplot'.
Performance Analysis with small query sizes
Performance Analysis with big query sizes
CPU load comparison for small and big query sizes
The figure below shows the CPU load (user+system load) for a test run of 10KB query and 3MB query sizes. The first bunch of bursts show the test for the 10KB, the second for the 3MB query.
The CPU load is ver much related to the query size. Small queries load the machine much more than queries for a lot of information. An explanation for this is that the machine is much more busy with I/O load for sending the data instead of processing the request. During small queries the CPU is much more loaded with dealing the requests and finding the information in the database.
Performance Tests with Alternative Hardware Configuration
To see how far the machine affects the performance of the requesthandling, the same tests were done on another machine with other hardware and software configuration ( Intel Dual Core Xeon 2.4Ghz, 2 Gb RAM ).
The graphs shown obove prove an impressive performance by upgrading the hardware. Comparing the average request duration time to the previous test round one can see that all times have improved by at least 200%. Some where even close to an 300% improvement (e.g. 150K : 15sec first test, 5,5 sec. second test).
There are not even timeouts.
--
FelixNikolausEhm - 26 Feb 2007