Versions Compared

Key

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

Table of Contents

Introduction

The Fedora Community has raised significant concerns about retrieval times for resources with many members.   By "members" we are talking about at least three scenarios

...

Using a set of tests originally devised by Esmé Cowles I modified them slightly and added a couple of new tests.  The latest versions can be found here : test scripts.   The test results, in most cases, reflect that fastest retrieval speeds I was able to get. Initial retrieval times tended to be slower in most cases due to the fact that modeshape needs to warm up the cache.  The scripts now make an initial GET call to warm the cache before timing a second call to the same resource.

...

  1.  Install postgresql 
  2. Install mysql-server 
  3. Build  the fcrepo4 project from the specified commit. 
  4. Run fcrepo-webapp using mvn clean jetty:run and the appropriate MAVEN_OPTS such as fcrepo.modeshape.configuration, fcrepo.mysql.username, fcrepo.mysql.password,  fcrepo.postgres.username, fcrepo.postgres.password.
  5. git clone https://github.com/dbernsteinfcrepo4-labs/fcrepo-performance-teststest-scripts.git
  6. For each test, I ran the scripts with 1000 and 10000 items. 

Instance Definition

  1. AWS / Ubuntu 16 / Oracle Java 8 / m3.medium  (3.7 GiB memory  / Intel Xeon E5-2670 (Sandy Bridge) Processor @  2.6 GHz x 1)
  2. Lenovo / Ubuntu 16.10 / Java HotSpot 1.8.0_111 / 11.6 GiB memory / Intel i7-4600U CPU @ 2.10GHz x 4
  3. AWS / Ubuntu 16 / Oracle Java 8 / m3.xlarge (14 GiB memory  / Intel Xeon E5-2670 (Sandy Bridge) Processor @  2.6 GHz x 4)
  4. AWS / Ubuntu 16 / Oracle Java 8 / c4.xlarge (7.5 GiB memory  / Intel Xeon E5-2666 v3 (Haswell)  @  2.9 GHz x 4)
  5. AWS / Ubuntu 16 / Oracle Java 8 / c4.2xlarge (15 GiB memory  /Intel Xeon E5-2666 v3 (Haswell) @  2.9 GHz x 8)
  6. AWS / Ubuntu 16 / Oracle Java 8 / c4.4xlarge (30 GiB memory  /Intel Xeon E5-2666 v3 (Haswell) @  2.9 GHz x 16)


n-children.sh

FCREPO Version
RepoBranch
Commit
Environment
Modeshape Config

# of relations

Test Duration

(seconds)

Tester

4.8.0-SNAPSHOTdbernstein
b60d4e5file-simple100005.222
4.8.0-SNAPSHOTdbernstein
daa11f35file-simple100005.567
4.8.0-SNAPSHOTdbernstein
b60d4e6file-simple100004.859
4.8.0-SNAPSHOTdbernstein
daa11f36file-simple100004.841

n-members.sh

...

Number of relations: 1000

FCREPO VersionRepobranchCommitmodeshape configEnvironment# of relations

Test Duration

(seconds)

TesterNotes
FCREPO VersionRepoBranchCommitmodeshapeEnvironment

# of relations

Test Duration

(seconds)

Tester
4.8.0-SNAPSHOTfcrepo4master2df32file-simple110001.408
4.7.1fcrepo4master4.7.1546f5a5file-simple210001.45
4.8.0-SNAPSHOTfcrepo4master2df32file-simple110,00028.583
4.7.1fcrepo4master4.7.1546f5a5file-simple210,00024.79
4.8.0-SNAPSHOTfcrepo4masterb60d4efile-simple310,0009.58
4.8.0-SNAPSHOTdbernstein
fcrepo-2105-v4-parallelization
daa11f3file-simple310,00012.16Danny Bernsteinparallel streams enabled.
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-v4-parallelizationdaa11f3file-simple410,0009.71Danny Bernsteinparallel streams enabled.
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-v4-parallelizationdaa11f3file-simple510,0008.51Danny Bernsteinparallel streams enabled.
4.8.0-SNAPSHOT

b60d4efile-simple510,0008.815
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-v4-parallelizationdaa11f3file-simple610,0008.29Danny Bernsteinparallel streams enabled.
4.8.0-SNAPSHOT

b60d4efile-simple610,0008.661
4.8.0-SNAPSHOTbbrananfcrepo-2402f0a51ejdbc-postgresql110001.543
4.8.0-SNAPSHOTbbrananfcrepo-2402f0a51ejdbc-postgresql11000010,00061.381perhaps postgres needs caching configured?
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-v4-parallelizationdaa11f3jdbc-postgresql310000.592
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-v4-parallelizationdaa11f3jdbc-postgresql31000010,00039.671
4.8.0-SNAPSHOTbbrananfcrepo-2402f0a51ejdbc-postgresql310004.435
4.8.0-SNAPSHOTbbrananfcrepo-2402f0a51ejdbc-postgresql31000010,00039.486
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-large-cachef453ajdbc-postgresql310000.5611 million item cache
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-large-cachef453ajdbc-postgresql31000010,0005.3341 million item cache
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-large-cache5138b4jdbc-postgresql310000.6331 million item cache + parallelized
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-large-cache5138b4jdbc-postgresql31000010,0005.3981 million item cache + parallelized
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-large-cache5138b4mysql-postgresql310000.8201 million item cache + parallelized
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-large-cache5138b4mysql-postgresql31000010,0007.7261 million item cache + parallelized

...

4.8.0-SNAPSHOTdbernsteinfcrepo-240275dd1jdbc-postgresql-s3310000.7011 million item cache + parallelized
4.8.0-SNAPSHOT
fcrepo4
dbernstein
master
fcrepo-2402
2df32
75dd1
file
jdbc-postgresql-
simple
s3
1
3
1000
10,000
6
5.
570
4851 million item cache + parallelized
4.
7
8.
1
0-SNAPSHOT
fcrepo4
dbernstein
master
fcrepo-2402
546f5a5
75dd1
file
jdbc-mysql-
simple
s3
2
31000
2
0.
80
864
4.
1 million item cache + parallelized
4.8.0-SNAPSHOT
fcrepo4
dbernstein
master
fcrepo-2402
2df32
75dd1
file
jdbc-mysql-
simple
s3
1
310,000
86
7.
000
3951 million item cache + parallelized
4.7.1fcrepo4
master
4.7.1546f5a5file-simple210,000
57
13.
35
07cacheSize = 50,000
4.
8
7.
0-SNAPSHOT
1fcrepo4
masterb60d4e
4.7.1546f5a5file-simple
3
210,00010.30cacheSize = 1,000,000


n-memberof.sh

Number of relations: 1000

FCREPO VersionCommitEnvironment# of relations

Test Duration

(seconds)

 parallel streams enabled.79010,00020992parallel streams enabled.80-SNAPSHOTdaa11f320337
FCREPO VersionRepobranchCommitmodeshape configEnvironment# of relations

Test Duration

(seconds)

TesterNotes30.02Unlike the n-member example, results begin streaming right away - so the response begins streaming within 2 seconds.4.8.0-SNAPSHOTdbernsteinfcrepo-2105-v4-parallelizationdaa11f3file-simple310,00029.975Danny Bernstein
4.8.0-SNAPSHOTfcrepo4masterdbernstein2df32fcrepo-2105-v4-parallelizationdaa11f3file-file-simple4110,0001000246.570
4.7.1fcrepo4parallel streams enabled.4.87.0-SNAPSHOTdbernsteinfcrepo-2105-v4-parallelizationdaa11f31546f5a5file-simple5210002.80Danny Bernstein


4.8.0-SNAPSHOTfcrepo4masterb60d4e2df32file-simple5110,0002686.357000
4.7.1dbernsteinfcrepo-2105-v4-parallelizationfcrepo44.7.1546f5a5file-simple6210,00057.35Danny Bernsteinparallel streams enabled.
4.8.0-SNAPSHOTfcrepo4masterb60d4efile-simple6310,0002530.78202Unlike the n-member example, results begin streaming right away - so the response begins streaming within 2 seconds.
4.8.0-SNAPSHOTbbranandbernsteinfcrepo-2105-2402v4-parallelizationf0a51edaa11f3jdbcfile-postgresqlsimple13100010,0001129.414975Danny Bernsteinparallel streams enabled.
4.4.8.0-SNAPSHOTbbranandbernsteinfcrepo-2105-v4-2402parallelizationf0a51edaa11f3jdbcfile-postgresqlsimple141000010,00024.790194Danny Bernsteinparallel streams enabled.
4.8.0-SNAPSHOTdbernsteincrepofcrepo-2105-v4-parallelizationdaa11f3jdbcfile-postgresqlsimple35100010,000320.961992Danny Bernsteinparallel streams enabled.
4.8.0-SNAPSHOTfcrepo4masterdbernsteinb60d4ecrepo-2105-v4-parallelizationdaa11f3jdbc-postgresql310000file-simple510,00026.35753.452
parallel streams enabled.4.8.0-SNAPSHOTbbranandbernsteinfcrepo-2105-2402v4-parallelizationf0a51edaa11f3jdbcfile-postgresqlsimple36100010,0001020.833337Danny Bernsteinparallel streams enabled.
4.8.0-SNAPSHOTbbrananfcrepo4fcrepo-2402masterf0a51eb60d4ejdbcfile-postgresqlsimple361000010,00010925.530782
4.8.0-SNAPSHOTdbernsteinbbrananfcrepo-2105-large-cache2402f0a51ef453ajdbc-postgresql311000010002211.9634141 million item cache.


4.8.0-SNAPSHOTdbernsteinbbrananfcrepo-2105-v4-parallelization2402f0a51e5138b4jdbc-postgresql311000010,00019411.5591 million item cache + parallelized


4.8.0-SNAPSHOTdbernsteinfcrepocrepo-2105-v4-parallelization5138b4daa11f3mysqljdbc-postgresql3100023.3379611 million item cache + parallelizedparallel streams enabled.
4.8.0-SNAPSHOTdbernsteinfcrepocrepo-2105-v4-parallelization5138b4daa11f3mysqljdbc-postgresql31000010,0001453.9984521 million item cache + parallelized

n-uris.sh

parallel streams enabled.
4.8.0-SNAPSHOT
2df32
bbrananfcrepo-2402f0a51ejdbc-postgresql3
1
1000
0
10.
039
833
4.
7
8.
1
0-SNAPSHOT
546f5a5210000.14
bbrananfcrepo-2402f0a51ejdbc-postgresql310,000109.530
Andrew Woods


4.8.0-SNAPSHOT
2df32110,0000.063
dbernsteinfcrepo-2105-large-cachef453ajdbc-postgresql31000022.9631 million item cache.
4.
7.1546f5a5
8.0-SNAPSHOTdbernsteinfcrepo-2105-v4-parallelization5138b4jdbc-postgresql3
2
10,000
0.17

n-properties.sh

11.5591 million item cache + parallelized
4.8.0-SNAPSHOTdbernsteinfcrepo-2105-v4-parallelization5138b4mysql-postgresql310002.3371 million item cache + parallelized
FCREPO VersionCommitEnvironment# of relations

Test Duration

(seconds)

Tester
4.8.0-SNAPSHOT
2df321 10000.0604.7.1546f5a5210000.089
dbernsteinfcrepo-2105-v4-parallelization5138b4mysql-postgresql310,00014.9981 million item cache + parallelized
Andrew Woods
4.8.0-SNAPSHOT
2df32110,0000.119
dbernsteinfcrepo-240275dd1jdbc-postgresql-s3310001.883
4.7.1546f5a5
1 million item cache + parallelized
4.8.0-SNAPSHOTdbernsteinfcrepo-240275dd1jdbc-postgresql-s33
2
10,000
1 million item cache + parallelized
0.281      

n-binaries.sh  (time for loading binary files)

4.8.0-SNAPSHOTdbernsteinfcrepo-240275dd1jdbc-mysql-s3310002.3741 million item cache + parallelized
4.8.0-SNAPSHOTdbernsteinfcrepo-240275dd1jdbc-mysql-s3310,00014.9561 million item cache + parallelized
4.7.1fcrepo44.7.1546f5a5file-simple210,00031.91cacheSize = 50,000
4.7.1fcrepo44.7.1546f5a5file-simple210,00023.07cacheSize = 1,000,000

n-uris.sh

FCREPO VersionCommitEnvironment# of relations

Test Duration

(seconds)


4.8.0-SNAPSHOT2df32110000.039
4.7.1546f5a5210000.14
4.8.0-SNAPSHOT2df32110,0000.063
4.7.1546f5a5210,0000.17

n-properties.sh

FCREPO VersionCommitEnvironment# of relations

Test Duration

(seconds)

Tester
4.8.0-SNAPSHOT2df321 10000.060
4.7.1546f5a5210000.089
4.8.0-SNAPSHOT2df32110,0000.119
4.7.1546f5a5210,0000.281







n-binaries.sh  (time for loading binary files)

repobranchCommitEnvironmentModeshape Config# of binariessize in KB

Test Duration

(seconds)

Tester
https://github.com/bbranan/fcrepo4.gitfcrepo-2402f0a51e1file-s3 1000100000:06:02
https://github.com/bbranan/fcrepo4.git fcrepo-2402f0a51e1file-simple1000100000:02:16
repobranchCommitEnvironmentModeshape Config# of binariessize in KB

Test Duration

(seconds)

Tester

https://github.com/bbranan/fcrepo4.gitfcrepo-2402f0a51e1
file
jdbc-
s3
postgresql
 1000
1000100000:
06
02:
02
13
https://github.com/bbranan/fcrepo4.gitfcrepo-2402f0a51e
1
3
file
jdbc-postgresql-
simple
s31000100000:
02
06:
16
36
https://github.com/bbranan/fcrepo4.gitfcrepo-2402f0a51e
1
3jdbc-mysql-
postgresql
s31000100000:
02
06:
13
32



Conclusions