Performance tests using benchtool were performed using two machines:

  • Desktop: 2010 MacPro (dual 2.26GHz Quad-core Xeon, 6GB RAM, 3GB/s SATA disk)
  • Laptop: 2013 Macbook Air (1.3GHz Core i5, 8GB RAM, 10GB/s SSD disk)
  • Connected via 802.11n wifi

Depending on which machine was used as the client and which was used as the server, I get dramatically different results:

ClientServerF3
time (ms)
F3
throughput (mb/s)
F4 single
time (ms)

F4 single
throughput (mb/s)

F4 minimal
time (ms)
F4 minimal
thoughput (mb/s)
Comparison
desktoplaptop1,103,6464.641,218,6154.20554,2289.24F4 minimal 2x faster
laptopdesktop1,245,3444.112,963,0191.73635,1668.06F4 minimal 2x faster
laptoplaptop64,25078.69693,9117.3763,87080.16approx. equal
desktopdesktop215,58623.752,510,9282.04102,77449.82F4 minimal 2x faster


The hardware used for these tests is not the typical server hardware I would normally expect to be used for running repository software.  But the differences suggest that some aspect of my setup (network latency, slower disk, etc.) impacts F4 much more dramatically than F3.

Ingesting 25,000 Objects (100KB datastreams)

On the laptop detailed above, I ingested 25,000 objects using benchtool, with one 100KB datastream per object.  Below are the times (in milliseconds) to process each batch of 1,000 objects).  Fedora 3 processed successive batches at constant speed, but each Fedora 4 batch took longer than the previous batch.  Switching to leveldb storage produced the same trend, but at a slightly slower starting point.

batchFedora 3Fedora 4 (minimal)Fedora 4 (minimal/leveldb)
1498473379540453
2367403681549240
3343693937562152
4332804740471717
5327565309281081
6324336136689874
7324416652497485
83183973329106713
93201679913115740
103203884424123734
113162892909133757
123135696724138626
1331478105221150474
1431166114825163861
1530993119416170712
1630922127985180907
1730700130925189496
1830920140059201232
1930706143905205339
2030820153584219809
2130635156370229460
2230943166349238547
2330814174377249617
2431340183079257109
2531603208978281443

Ingesting 10,000 Objects (50MB datastreams)

On the laptop detailed above (Platform: melendor.local, Repository: Minimal), I ingested 10,000 objects using benchtool with one 50MB datastream per object, for a total of about 500GB of data (Procedure: 10,000 x 50MB).  Below are the times (in milliseconds) to process each batch of 100 objects).  Both Fedora 3 and Fedora 4 processed successive batches at roughly constant speed, but Fedora 4 was approximately 1.8x faster (averaging 2:47 per batch compared to Fedora 3's 4:59 per batch).

batchFedora 3Fedora 4 (minimal)
1290788155127
2293678154484
3295111156252
4295962157926
5302069159000
6298721160365
7300685160853
8300740165863
9299747163468
10301556164443
11303861163171
12300091164029
13298787162513
14298724162098
15301085161380
16296167161457
17294318161638
18290227162317
19288966160999
20308677161790
21303017162929
22297760163207
23294605162424
24295788162091
25295981163107
26296948165043
27297577162752
28295650163267
29290712165607
30295921164738
31297859163131
32300048163308
33292107163824
34299284165421
35300503164128
36293813164559
37298295165218
38295376164738
39296687164848
40300273165371
41294990165495
42300647166607
43298399165596
44301814166976
45298124167070
46296355165732
47299041166921
48298724165260
49294858165933
50299575176832
51300505166455
52295658166773
53301021166932
54296317168370
55295020166833
56303502167670
57300035168204
58304416167630
59299448167861
60296159167476
61302893169372
62298650169443
63296943168846
64295261169570
65302757169021
66300400169550
67298693167803
68300473168840
69296038169339
70297755169388
71302784176599
72298056168773
73299224171291
74297199169741
75301671168778
76299044169379
77302522173463
78295791169912
79296927169597
80306097170421
81302493171432
82301077169981
83303602170674
84303631171172
85298102172985
86301552172529
87304410174062
88305995171477
89302005171312
90299469172294
91301209174919
92306794179721
93298726175800
94297843172196
95303512174223
96300477172386
97302825173491
98302478176587
99296834174085
100299554173593
  • No labels

5 Comments

  1. Is the implication that F4 bottlenecks are masked by network-latency in cases #1 and #2?

    It would be interesting to put YourKit on either of tests #3 or #4 in the F4 case to see where the majority of time is taken.

    • It would also be useful to make clear what SystemProperties were being used in the F4 configuration (or most importantly, which modeshape and infinispan configs were used) 
  2. Unknown User (escowles@ucsd.edu)

    Yes, I think the effect of network latency is overwhelming the base performance differences.  F3 is ~20x faster with both the client and server on the laptop compared to the client on the desktop and the server on the laptop.  And it's ~6x faster with both client and server on the desktop.  But F4 doesn't show the same level of improvements (it's only about 2x faster with both client and server on the laptop, and only marginally faster with both on the desktop).

    These tests were run with a stock fcrepo4 with no System properties set to alter the Modeshape/Infinispan defaults.  I'm rerunning the tests now using the minimal config and the times are much more competitive with F3 – I'll update the table shortly.

  3. Using "minimal" config is much more encouraging. Thanks for making that picture clear (at least for your hardware). 

    We should get Osman Din and frank asseg to try as well.

  4. Unknown User (escowles@ucsd.edu), in looking more closely at the "minimal" config, it is using the "storage" type of "file". In terms of performance, I believe we see better numbers with a "storage" type of "cache" using LevelDB (as defined in "single"). Could you run the "minimal" test again with the "storage" element defined as in "single"... which would effectively be using "single" without the "query" element.

  5. These are very interesting results, Unknown User (escowles@ucsd.edu). Would it be possible to create a small table at the beginning of the page that summarizes and highlights the findings?