Wiki source code of Performance test on Jetty/HSQLDB with a single wiki between 5.4.6 and 6.4
Version 117.1 by Thomas Mortagne on 2015/01/21 16:45
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{toc/}} | ||
2 | |||
3 | = Environment = | ||
4 | |||
5 | * Ubuntu 14.10 64b | ||
6 | * Quad core i7 | ||
7 | * Oracle JDK 1.8.0_25 64b | ||
8 | * standard jetty+hsqldb | ||
9 | * only main wiki | ||
10 | |||
11 | Unless specifically indicated otherwise all the test are executed with a fully initialized instance (core extensions don't run anymore, SOLR index is fully up to date, etc.). Basically except for a few special tests we are using an instance that already been started and run until the proc is flat for some time. | ||
12 | |||
13 | = Summary = | ||
14 | |||
15 | == Speed == | ||
16 | |||
17 | |=(% colspan="2" %)Actions|=Difference | ||
18 | |(% colspan="2" %)[[Jetty startup>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HJettystartup"]]|(% style="color:green" %)Slightly better | ||
19 | |(% rowspan="2" width="150" %)[[First access>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HFirstaccess"]]|(% width="300" %)[[not existing page without UI>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HFirstaccesstonotexistingpagewithoutUI282Fxwiki2Fbin2Fget2FNoSpace2FNoPage29"]]|(% style="color:orange" %)Same | ||
20 | |[[not existing page with UI>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HFirstaccesstonotexistingpagewithUI282Fxwiki2Fbin2Fview2FNoSpace2FNoPage29"]]|(% style="color:red" %)x2 (most probably the LESS init) | ||
21 | |(% rowspan="4" %)[[Reload>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HReload"]]|[[not existing page without UI>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HReloadofnotexistingpagewithoutUI282Fxwiki2Fbin2Fget2FNoSpace2FNoPage29"]]|(% style="color:orange" %)Same | ||
22 | |[[not existing page with UI>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HReloadofnotexistingpagewithUI282Fxwiki2Fbin2Fview2FNoSpace2FNoPage29"]]|(% style="color:green" %)Slightly better | ||
23 | |[[Main.WebHome with UI>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HReloadofMain.WebHomewithUI"]]|(% style="color:green" %)Slightly better | ||
24 | |[[Main.WebHome without UI>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HReloadofMain.WebHomewithoutUI"]]|(% style="color:green" %)Slightly better | ||
25 | |(% rowspan="3" %)[[SOLR>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HSOLR"]]|[[Full SOLR reindex>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HFullSOLRreindex"]]|(% style="color:orange" %)Same | ||
26 | |[[SOLR sync when index is empty>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="Hwhenindexisempty"]]|(% style="color:orange" %)Same | ||
27 | |[[SOLR sync when there is nothing to do>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="Hwhenthereisnothingtodo"]]|(% style="color:orange" %)Same | ||
28 | |[[Rendering>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HRendering"]]|[[Page with 1000 macros without UI>>test:Performances.Jetty HSQLDB single wiki 546 to 64||anchor="HPagewith1000macroswithoutUI"]]|(% style="color:green" %)/3 | ||
29 | |||
30 | == Memory == | ||
31 | |||
32 | |=(% width="450" %)Actions|=Difference | ||
33 | |[[Memory after jetty startup>>Performances.Jetty HSQLDB single wiki 546 to 64||anchor="#HHeapmemoryafterjettystartup"]]|(% style="color:green" %)Use a bit more but keep less | ||
34 | |[[Memory after full SOLR index>>Performances.Jetty HSQLDB single wiki 546 to 64||anchor="#HHeapmemoryafterfullSOLRindex"]]|(% style="color:green" %)Use less and keep less | ||
35 | |||
36 | = Jetty startup = | ||
37 | |||
38 | Unit: seconds | ||
39 | |||
40 | Until end message is printed. Done by hand with a chronometer. | ||
41 | |||
42 | * 5.4.6: 10 | ||
43 | * 6.4: 8 | ||
44 | |||
45 | = First access = | ||
46 | |||
47 | First HTTP request after restarting Jetty. | ||
48 | |||
49 | == First access to not existing page without UI (/xwiki/bin/get/NoSpace/NoPage) == | ||
50 | |||
51 | Unit: seconds | ||
52 | |||
53 | Firefox network statistics to load the root resource (image/js/css/etc. resources are not taken into account). | ||
54 | |||
55 | * 5.4.6 : 8 | ||
56 | * 6.4 : 9 | ||
57 | |||
58 | == First access to not existing page with UI (/xwiki/bin/view/NoSpace/NoPage) == | ||
59 | |||
60 | Unit: seconds | ||
61 | |||
62 | Firefox network statistics to load the root resource (image/js/css/etc. resources are not taken into account). | ||
63 | |||
64 | * 5.4.6 : 9 | ||
65 | |||
66 | Done by hand with a chronometer (image/js/css/etc. resources are not taken into account). | ||
67 | |||
68 | * 6.4 : 18 | ||
69 | |||
70 | = Reload = | ||
71 | |||
72 | XWiki is doing nothing on background and everything is both in server and client cache already. Firefox network statistics to load the root resource (image/js/css/etc. resources are not taken into account). | ||
73 | |||
74 | == Reload of not existing page without UI (/xwiki/bin/get/NoSpace/NoPage) == | ||
75 | |||
76 | Unit: milliseconds | ||
77 | |||
78 | * 5.4.6 : [10, 20] | ||
79 | * 6.4 : [10, 20] | ||
80 | |||
81 | == Reload of not existing page with UI (/xwiki/bin/view/NoSpace/NoPage) == | ||
82 | |||
83 | Unit: milliseconds | ||
84 | |||
85 | * 5.4.6 : [75, 130] | ||
86 | * 6.4 : [70, 100] | ||
87 | |||
88 | == Reload of Main.WebHome with UI == | ||
89 | |||
90 | Unit: milliseconds | ||
91 | |||
92 | * 5.4.6 : [170,300] | ||
93 | * 6.4 : [150,220] | ||
94 | |||
95 | == Reload of Main.WebHome without UI == | ||
96 | |||
97 | Unit: milliseconds | ||
98 | |||
99 | * 5.4.6 : [60, 100] | ||
100 | * 6.4 : [50, 80] | ||
101 | |||
102 | = SOLR = | ||
103 | |||
104 | == Full SOLR reindex == | ||
105 | |||
106 | Unit: seconds | ||
107 | |||
108 | Delete the data/solr folder, restart, load home page and calculate the time of activity of the SOLR index thread using Yourkit (Yourkit is slowing down a bit all that but what is important is the difference anyway). | ||
109 | |||
110 | * 5.4.6 : 59 | ||
111 | * 6.4 : 60 | ||
112 | |||
113 | == SOLR sync == | ||
114 | |||
115 | Only the thread determining what need to be indexed and not the actual indexing. | ||
116 | |||
117 | === when index is empty === | ||
118 | |||
119 | Unit: seconds | ||
120 | |||
121 | * 5.4.6 : 1 | ||
122 | * 6.4 : 1 | ||
123 | |||
124 | === when there is nothing to do === | ||
125 | |||
126 | Unit: seconds | ||
127 | |||
128 | * 5.4.6 : < 1 | ||
129 | * 6.4 : < 1 | ||
130 | |||
131 | = Rendering = | ||
132 | |||
133 | == Page with 1000 macros without UI == | ||
134 | |||
135 | 1000 times ~{~{id}} macro, one on each line. | ||
136 | |||
137 | Unit: seconds | ||
138 | |||
139 | * 5.4.6 : 10 | ||
140 | * 6.4 : 3 | ||
141 | |||
142 | = Heap Memory = | ||
143 | |||
144 | Attach Yourkit to get the information. | ||
145 | |||
146 | Unit: MB | ||
147 | |||
148 | == Heap Memory after jetty startup == | ||
149 | |||
150 | Start jetty and wait until java is not doing anything on both (wait for potential initialization of various stuff like core extension cache, etc). Force garbage collector before looking at the values. | ||
151 | |||
152 | * 5.4.6 : 60 used, 449 allocated | ||
153 | * 6.4 : 44 used, 460 allocated | ||
154 | |||
155 | == Heap Memory after full SOLR index == | ||
156 | |||
157 | Delete the data/solr folder, restart, load home page then wait until nothing is happening in background. Force garbage collector before looking at the values. | ||
158 | |||
159 | Unit: MB | ||
160 | |||
161 | * 5.4.6 : 117 used, 499 allocated | ||
162 | * 6.4 : 90 used, 493 allocated |