-
Introduction
Following the release of Fedora 2.1, we received several reports of poor API-M performance, especially when modifying and removing existing Fedora objects.
To fully understand the problem, we enabled detailed server logging and executed a series of tests against all API-M methods. After making several improvements to the Fedora server code we re-ran the original tests.
The results included in this report illustrate the significant performance boost we experienced after making these changes.
-
Test Environment
Hardware:
- CPUs: (4) Intel Xeon 3.60GHz (2MB cache)
- Physical Memory: 6GB
Software:
- OS: Linux 2.6.9-11 (64-bit)
- Database: MySQL v4.1.10a (local instance)
- Java: 1.5.0_05-b05 (64-bit)
All tests were performed on a single Fedora server with:
- 2.1 million digital objects, each with:
- 3-5 "X" (inline XML) datastreams
- 0-1 "R" (redirect) datastream
- 2-4 disseminators
- An average FOXML size of 10kb
- 160 million triples in the Resource Index (indexing at level 2)
- 512MB maximum Java heap size for Tomcat (this is 2x the default)
- Disabled policy enforcement (this is enabled by default in fedora.fcfg)
- Disabled JAASLoginModule for authentication (using MemoryRealm instead)
-
Test Results
Each API-M method was tested and individual logs were saved for each test. The following object was used in all tests:
Below are the "before" and "after" test results for API-M performance. In the "before" report, take particular notice of the API-M operations highlighted in red. These operations were of most concern in terms of response time. The "after" report shows that these operations have been tuned and now complete within milliseconds, as do all other API-M operations.
Note: The following changes were made before the second test: