Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Alpha-1 benchmark test results are from June 2013:

These tests ingested a very small number of objects/containers (10), and files ranging from 1 byte to 100MB.

Alpha-3 Test

...

  • Number of Objects: In initial testing, all nodes were created as children of a single node.  This resulted in degraded ingest performance as the repository size grew, particularly after 20K objects.
  • Datastream Size: In my experience, the larger files in those tests (1MB, 8MB, 100MB) are fairly typical for high-res images and audio/video derivatives, and audio/video masters are much larger.

Testing full-scale ingest would take more disk space and time than we have available.  So it probably makes more sense to do two separate tests:

  • Many Objects: 25K objects with small datastreams (100KB): 2.5GB total data size
  • Large Datastreams: 100 objects with larger datastreams (50MB): 5GB total data size

In addition to varying the number of objects and datastream size, it is particularly important to perform some tests on the same hardware in order to have directly-comparable data:

  • Thread Test: Run the same test on the same hardware with increasing numbers of client threads
  • Fedora 3/4 Comparison: Run the same tests on the same hardware with both Fedora 3 and 4

Ingest Test Matrix (Profile)

Fedora 3/4 Comparison

Objects

Datastream
Size

Fedora 3
Time (ms)

Fedora 4
Time (ms)

Notes
10050MB389,034281,301Performance evaluation on the SCC Cluster (Tests #A & #C included here) 
10050MB 881,883Performance evaluation on AWS #C
10050MB12328570,728Test - Cluster Setup - Yale #A & #C
10050MB57,814134,471Test - Platform Profile: Single VM at UNC Chapel Hill
10050MB231,663131,143Platform: Test - Platform Profile: lib-devsandbox1.ucsd.edu, Repository: Test - Repository Profile: Minimal , average of 100 ingest batches

Using Benchtool

The ingest benchmarking tool is available on github: https://github.com/futures/benchtool

To build and run benchtool against Fedora 4 (creating 1000 objects with 1KB datastreams using 5 client threads):

Code Block
git clone git@github.com:futures/benchtool.git
cd benchtool
mvn install
java -cp target/bench-tool-0.0.1-SNAPSHOT-jar-with-dependencies.jar org.fcrepo.bench.BenchToolFC4 http://localhost:8080 1000 1024 5 ingest

To run against Fedora 3 (creating 1000 objects with 1KB datastreams):

Code Block
java -cp target/bench-tool-0.0.1-SNAPSHOT-jar-with-dependencies.jar org.fcrepo.bench.BenchToolFC3 http://localhost:8983/fedora fedoraAdmin fedoraAdmin 1000 1024 ingest

Running benchtool will output a running progress percentage, and then output the time to perform the ingest:

Code Block
Complete ingest of 1000 files took 23301 ms

Ingest/Read/Update/Delete Test Results

Results

The Alpha-3 benchmark test results from December 2013:

Create/Read/Update/Delete Test Results

Testing was performed to create, read, update and delete objects/containers in Fedora 3, Fedora 4-alpha3, and Fedora 4-alpha5 (4-current), using the cURL command-line tool (Fedora 3 test script, Fedora 4 test script).  Each test run processed 3,000 objects/containers, and each object had a single 10MB binary.  Each repository was tested twice and the average times are summarized below.

 

PlatformRepositoryObjects/ContainersBinary SizeIngest (sec)Read (sec)Update (sec)Delete (sec
Platform/Repository ProfilesRepositoryObjectsDatastream SizeIngest (ms)Read (ms)Update (ms)Delete (ms
)
lib-devsandbox1.ucsd.edu
, Repository: Minimal

fcrepo3/hydra-jetty
(45640663faa7e32ef9af72649839b6630221255b)

1,00050 MB 470,4662,198,42510,787lib-devsandbox1.ucsd.edu, Repository: Minimalfcrepo41,00050 MB 527,3491,287,50639,336lib-devsandbox1.ucsd.edu

fcrepo3/hydra-jetty
(45640663faa7e32ef9af72649839b6630221255b)

1,00010 MB485,700107,649438,00152,611
 

Fedora 3.7.1

3,00010 MB1,3438131,19542
lib-devsandbox1.ucsd.edubarmintor/fcrepo4 (a0a6f1af258f1247c824e30a186f38c2071395a3)
(with custom ispn config)1,00010 MB304,447144,682281,38137,805lib-devsandbox1.ucsd.edu
+ NAS + filefcrepo4 (ceae23e7a18b30a9aa283e5a66da290a551fe8ab)1,00010 MB 331,110 155,743 354,122 45,119lib-devsandbox1.ucsd.edu + NAS + leveldbfcrepo4 (ceae23e7a18b30a9aa283e5a66da290a551fe8ab)1,00010 MB 344,792 167,567 366,714 45,689lib-devsandbox1.ucsd.edu + local disk + filefcrepo4 (ceae23e7a18b30a9aa283e5a66da290a551fe8ab)1,00010 MB 235,597 169,930 253,178 45,492
lib-devsandbox1.ucsd.edu
fcrepo4 (2707674c86e5a82df82f937fb87c6a1a259c0bd3)1,00010 MB 334,177144,367324,90845,334
Fedora 4.0-alpha33,00010 MB1,3967981,202139
lib-devsandbox1.ucsd.edu
+ local disk + leveldbfcrepo4 (ceae23e7a18b30a9aa283e5a66da290a551fe8ab)1,00010 MB 228,773 161,836 246,275 42,535

 

Ingest/Read/Update/Delete Test Results (Rewritten Benchtool)

A complete rewrite of our benchmarking tool in early December 2013 means that the results are not directly-comparable to earlier results with the previous version.

Fedora 4.0-alpha5 (4-current)3
Platform/Repository ProfilesRepositoryObjectsDatastream SizeIngest (ms)Read (ms)Update (ms)Delete (ms)lib-devsandbox1.ucsd.edu 

fcrepo3/hydra-jetty
(45640663faa7e32ef9af72649839b6630221255b)

1,00010 MB 510,53439,862518,29333,446lib-devsandbox1.ucsd.edu
Repository: Minimalfcrepo4 (44edb61e179204e272f0937c17cff08f35d5a471)1
,00010 MB
 278
 1,
235 21,242 288,054 23,744lib-devsandbox1.ucsd.edu
Repository: Minimal
config: customfcrepo4 (44edb61e179204e272f0937c17cff08f35d5a471)1,00010 MB 265,231 16,562 250,832 5,473
2146131,112121

 

Image Added