Last modified by Thomas Mortagne on 2017/01/26 15:46

Show last authors
1 {{toc/}}
2
3 = Environment =
4
5 {{velocity}}
6 #if ($xcontext.action == 'edit')
7 ; Next version
8 : $doc.next
9 ; Previous version
10 : $doc.previous
11 #end
12 {{/velocity}}
13
14 * Ubuntu 16.10 64b
15 * Quad core i7-6700HQ
16 * Oracle JDK 1.8.0_111 64b
17 * Dumbbench 0.10
18 * standard jetty+hsqldb
19 * permdir in a SSD
20 * only main wiki
21 * configuration
22 ** ##Admin user:##
23 *** ##hidden documents enabled##
24 * import attach:perf.xar
25
26 Most of response time statistics are made with [[Dumbbench>>https://github.com/tsee/dumbbench]], you can install it using cpan.
27 For example on Debian/Ubuntu:
28
29 {{code language="bash"}}
30 $ sudo apt-get install cpanminus
31 $ sudo cpanm Dumbbench
32 {{/code}}
33
34 Unless specifically indicated otherwise all the tests are executed with a fully initialized instance (core extensions don't run anymore, SOLR index is fully up to date, etc.) and logged in with Admin user. 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.
35
36 Login with Admin user:
37
38 {{code language="none"}}
39 wget --save-cookies cookies.txt --post-data 'j_username=Admin&j_password=admin&j_rememberme=true' -O /dev/null -o /dev/null "http://127.0.0.1:8080/xwiki/bin/loginsubmit/XWiki/XWikiLogin?j_username=Admin&j_password=admin&j_rememberme=true"
40 {{/code}}
41
42 = Tests =
43
44 == Summary ==
45
46 Jetty startup takes longer mostly because of:
47
48 * Let's Encrypt certificate registration (which recreate the certificate store). This module is not embedded anymore in 9.0.
49 * Full loading of core extensions. Small price to pay to have a much more reliable core extension index (in most cases there is no guessed or missing core extension anymore). The size of the wiki has no impact on time spent (the number of core extensions does not change).
50
51 The skin is a lot slower than in 7.4.5.
52
53 A lot of work has been done to improve Solr UI display (a bit less obvious with the slowness of the skin).
54
55 The memory has been reduced a lot [[compared to 8.3>>test:Performances.Jetty HSQLDB single wiki 745 to 83]] thanks to optimization in the way to create Extension instances to reduce a lot the duplications (only one instances kept for identical instances of Version, ExtensionDependency, etc.). The difference is even more important in very big wikis like http://myxwiki.org which contains a huge number of installed extensions cached in memory.
56
57 "(% style="color:orange" %)similar(%%)": difference is lower than 10%
58 "slightly": difference is lower than 20%
59
60 {{info}}
61 Note that most of the speed related values are an average of very moving results, a lot of things is happening during a HTTP request and it's far from stable duration (that's why 10% may sounds a lot for something called "similar" but the variable can go up and down around 5% sometimes so 10% average is really not that much of a clear win). Dumbbench based tests are executed several times and the lowest result is selected.
62 {{/info}}
63
64 === Speed ===
65
66 |=(% colspan="2" %)Actions|=Difference
67 |(% colspan="2" %){{sl}}Jetty startup{{/sl}}|(% style="color:red" %)+25%
68 |(% rowspan="2" width="150" %){{sl}}First access{{/sl}}|(% width="300" %){{sl id="HFirstaccesstonotexistingpagewithoutUI"}}not existing page without UI{{/sl}}|(% style="color:orange" %)similar
69 |{{sl id="HFirstaccesstonotexistingpagewithUI"}}not existing page with UI{{/sl}}|(% style="color:red" %)+36%
70 |(% rowspan="6" %){{sl}}Reload{{/sl}}|{{sl id="HReloadofnotexistingpagewithoutUI"}}not existing page without UI{{/sl}}|(% style="color:orange" %)similar
71 |{{sl id="HReloadofnotexistingpagewithUI"}}not existing page with UI{{/sl}}|(% style="color:red" %)+35%
72 |{{sl id="HReloadofemptypagewithoutUI"}}empty page without UI{{/sl}}|(% style="color:orange" %)similar
73 |{{sl id="HReloadofemptypagewithUI"}}empty page with UI{{/sl}}|(% style="color:red" %)+22%
74 |{{sl id="HReloadofMain.WebHomewithoutUI"}}Main.WebHome without UI{{/sl}}|(% style="color:green" %)/5
75 |{{sl id="HReloadofMain.WebHomewithUI"}}Main.WebHome with UI{{/sl}}|(% style="color:green" %)-21%
76 |(% rowspan="5" %){{sl}}SOLR{{/sl}}|{{sl}}Full SOLR reindex{{/sl}}|(% style="color:orange" %)similar
77 |{{sl id="Hwhenindexisempty"}}SOLR sync when index is empty{{/sl}}|(% style="color:orange" %)similar
78 |{{sl id="Hwhenthereisnothingtodo"}}SOLR sync when there is nothing to do{{/sl}}|(% style="color:orange" %)similar
79 |{{sl}}Result of search finding lots of results{{/sl}}|(% style="color:green" %)-23%
80 |{{sl}}Result of search finding one result{{/sl}}|(% style="color:green" %)-32%
81 |(% rowspan="2" %){{sl}}Rendering{{/sl}}|{{sl}}Page with 1000 macros without UI{{/sl}}|(% style="color:green" %)-15%
82 |{{sl}}Page with 1000 html macros without UI{{/sl}}|(% style="color:green" %)-17%
83
84 === Memory ===
85
86 |=(% width="450" %)Actions|=Difference
87 |{{sl}}Heap Memory after jetty startup{{/sl}}|(% style="color:orange" %)similar
88 |{{sl}}Heap Memory after full SOLR index{{/sl}}|(% style="color:orange" %)similar
89
90 == Jetty startup ==
91
92 Unit: seconds
93
94 You get this from the log with the line looking like {{code language="none"}}2016-10-19 16:52:25.309:INFO:oejs.Server:main: Started @8434ms{{/code}}.
95
96 * {{previous/}}: 8
97 * {{next/}}: 10
98
99 == First access ==
100
101 First HTTP request after restarting Jetty.
102
103 === First access to not existing page without UI ===
104
105 (/xwiki/bin/get/NoSpace/NoPage)
106
107 Unit: seconds
108
109 Firefox network statistics to load the root resource (image/js/css/etc. resources are not taken into account).
110
111 * {{previous/}}: 5
112 * {{next/}}: 5
113
114 === First access to not existing page with UI ===
115
116 (/xwiki/bin/view/NoSpace/NoPage)
117
118 Unit: seconds
119
120 Done by hand with a chronometer (image/js/css/etc. resources are not taken into account).
121
122 * {{previous/}}: 11
123 * {{next/}}: 15
124
125 == Reload ==
126
127 XWiki is doing nothing on background and everything is both in server and client cache already. Values are calculated using dumbbench (image/js/css/etc. resources are not taken into account).
128
129 === Reload of not existing page without UI ===
130
131 {{code language="none"}}
132 dumbbench -p 0.1 -i 1000 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/get/NoSpace/NoPage"
133 {{/code}}
134
135 Unit: milliseconds
136
137 * {{previous/}}: 6.5
138 * {{next/}}: 6.2
139
140 === Reload of not existing page with UI ===
141
142 {{code language="none"}}
143 dumbbench -p 0.1 -i 1000 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/view/NoSpace/NoPage"
144 {{/code}}
145
146 Unit: milliseconds
147
148 * {{previous/}}: 60
149 * {{next/}}: 81
150
151 === Reload of empty page without UI ===
152
153 {{code language="none"}}
154 dumbbench -p 0.1 -i 1000 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/get/EmptySpace/EmptyPage"
155 {{/code}}
156
157 Unit: milliseconds
158
159 * {{previous/}}: 6.5
160 * {{next/}}: 6.4
161
162 === Reload of empty page with UI ===
163
164 {{code language="none"}}
165 dumbbench -p 0.1 -i 1000 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/view/EmptySpace/EmptyPage"
166 {{/code}}
167
168 Unit: milliseconds
169
170 * {{previous/}}: 65
171 * {{next/}}: 79
172
173 === Reload of Main.WebHome without UI ===
174
175 {{code language="none"}}
176 dumbbench -p 0.1 -i 1000 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/get/Main/WebHome"
177 {{/code}}
178
179 Unit: milliseconds
180
181 * {{previous/}}: 44
182 * {{next/}}: 8
183
184 === Reload of Main.WebHome with UI ===
185
186 {{code language="none"}}
187 dumbbench -p 0.1 -i 1000 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/view/Main/WebHome"
188 {{/code}}
189
190 Unit: milliseconds
191
192 * {{previous/}}: 107
193 * {{next/}}: 85
194
195 == SOLR ==
196
197 === Full SOLR reindex ===
198
199 Unit: seconds
200
201 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).
202
203 * {{previous/}}: 50
204 * {{next/}}: 55
205
206 === SOLR sync ===
207
208 Only the thread determining what need to be indexed and not the actual indexing.
209
210 ==== when index is empty ====
211
212 Unit: seconds
213
214 * {{previous/}}: < 1
215 * {{next/}}: < 1
216
217 ==== when there is nothing to do ====
218
219 Unit: seconds
220
221 * {{previous/}}: < 1
222 * {{next/}}: < 1
223
224 === Search ===
225
226 XWiki is doing nothing on background and everything is both in server and client cache already. Values are calculated using dumbbench (image/js/css/etc. resources are not taken into account).
227
228 Unit: milliseconds
229
230 ==== Result of search finding lots of results ====
231
232 Login with Admin user and make sure hidden document display is enabled.
233
234 {{code language="none"}}
235 dumbbench -p 0.1 -i 100 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/view/Main/Search?sort=score&sortOrder=desc&r=1&f_type=DOCUMENT&text=*"
236 {{/code}}
237
238 * {{previous/}}: 198
239 * {{next/}}: 153
240
241 ==== Result of search finding one result ====
242
243 {{code language="none"}}
244 dumbbench -p 0.1 -i 100 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/view/Main/Search?sort=score&sortOrder=desc&r=1&f_type=DOCUMENT&text=name%3A1000Macros"
245 {{/code}}
246
247 * {{previous/}}: 165
248 * {{next/}}: 113
249
250 == Rendering ==
251
252 === Page with 1000 macros without UI ===
253
254 {{code language="none"}}
255 dumbbench -p 0.1 -i 100 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/get/Test/1000Macros"
256 {{/code}}
257
258 Unit: milliseconds
259
260 * {{previous/}}: 75
261 * {{next/}}: 64
262
263 === Page with 1000 html macros without UI ===
264
265 {{code language="none"}}
266 dumbbench -p 0.1 -i 100 -- wget -q -o /dev/null -O /dev/null --load-cookies cookies.txt "http://127.0.0.1:8080/xwiki/bin/get/Test/1000HTMLMacros"
267 {{/code}}
268
269 Unit: milliseconds
270
271 * {{previous/}}: 774
272 * {{next/}}: 645
273
274 == Heap Memory ==
275
276 Attach Yourkit to get the information.
277
278 Unit: MB
279
280 === Heap Memory after jetty startup ===
281
282 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.
283
284 * {{previous/}}: 41 used, 480 allocated
285 * {{next/}}: 46 used, 556 allocated
286
287 === Heap Memory after full SOLR index ===
288
289 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.
290
291 Unit: MB
292
293 * {{previous/}}: 160 used, 505 allocated
294 * {{next/}}: 159 used, 807 allocated

Get Connected