Hide last authors
Thomas Mortagne 6.1 1 {{toc/}}
2
Thomas Mortagne 146.2 3 = Environment =
4
Thomas Mortagne 145.1 5 {{velocity}}
Thomas Mortagne 146.1 6 #if ($xcontext.action == 'edit')
Thomas Mortagne 198.3 7 ; Next version
8 : $doc.next
Thomas Mortagne 145.1 9 ; Previous version
10 : $doc.previous
11 #end
12 {{/velocity}}
13
Thomas Mortagne 240.3 14 * Ubuntu 18.10 64b
15 * Quad core i7-8750H
16 * Oracle JDK 1.8.0_191 64b
Thomas Mortagne 228.2 17 * Dumbbench 0.111
Thomas Mortagne 240.3 18 * Yourkit 2018.04-b87
Thomas Mortagne 1.1 19 * standard jetty+hsqldb
Thomas Mortagne 144.1 20 * permdir in a SSD
Thomas Mortagne 228.6 21 * jetty/hsqldb package
Thomas Mortagne 12.1 22 * only main wiki
Thomas Mortagne 141.1 23 * configuration
Thomas Mortagne 149.4 24 ** ##Admin user:##
25 *** ##hidden documents enabled##
Thomas Mortagne 205.1 26 * import attach:perf.xar
Thomas Mortagne 1.1 27
Thomas Mortagne 228.2 28 Most of response time statistics are made with [[Dumbbench>>https://metacpan.org/pod/Dumbbench]], you can install it using cpan.
Thomas Mortagne 157.1 29 For example on Debian/Ubuntu:
30
31 {{code language="bash"}}
32 $ sudo apt-get install cpanminus
Thomas Mortagne 228.2 33 $ sudo cpanm Module::Install
Thomas Mortagne 157.1 34 $ sudo cpanm Dumbbench
35 {{/code}}
36
Thomas Mortagne 192.2 37 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.
Thomas Mortagne 113.1 38
Thomas Mortagne 204.1 39 Login with Admin user:
Thomas Mortagne 165.1 40
41 {{code language="none"}}
Thomas Mortagne 167.1 42 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"
Thomas Mortagne 165.1 43 {{/code}}
44
Thomas Mortagne 177.1 45 = Tests =
Thomas Mortagne 67.1 46
Thomas Mortagne 177.1 47 == Summary ==
Vincent Massol 176.2 48
Vincent Massol 240.24 49 All the performance boosts are coming from the asynchronous rendering and caching of various elements of the skin. We need to analyze in details what is stored in the increased memory use but various new caches have been added so it's not suprising (notification preference cache, groups cache, cached skin elements). The degraded indexing speed will need to be analyzed too. Even if there are more documents to index in 10.10 (+3%), it's probably not enough to explain the ##x2## difference.
Thomas Mortagne 212.1 50
Thomas Mortagne 163.1 51 "(% style="color:orange" %)similar(%%)": difference is lower than 10%
Thomas Mortagne 180.1 52 "slightly": difference is lower than 20%
Thomas Mortagne 160.1 53
Thomas Mortagne 212.1 54 {{info}}
Thomas Mortagne 240.2 55 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.
Thomas Mortagne 212.1 56 {{/info}}
Thomas Mortagne 179.1 57
Thomas Mortagne 177.1 58 === Speed ===
Thomas Mortagne 68.1 59
Thomas Mortagne 81.1 60 |=(% colspan="2" %)Actions|=Difference
Thomas Mortagne 240.22 61 |(% colspan="2" %){{sl}}Jetty startup{{/sl}}|(% style="color:orange" %)similar
62 |(% rowspan="2" width="150" %){{sl}}First access{{/sl}}|(% width="300" %){{sl id="HFirstaccesstonotexistingpagewithoutUI"}}not existing page without UI{{/sl}}|(% style="color:orange" %)similar
63 |{{sl id="HFirstaccesstonotexistingpagewithUI"}}not existing page with UI{{/sl}}|(% style="color:green" %)slightly faster
64 |(% rowspan="6" %){{sl}}Reload{{/sl}}|{{sl id="HReloadofnotexistingpagewithoutUI"}}not existing page without UI{{/sl}}|(% style="color:orange" %)similar
65 |{{sl id="HReloadofnotexistingpagewithUI"}}not existing page with UI{{/sl}}|(% style="color:green" %)-30%
66 |{{sl id="HReloadofemptypagewithoutUI"}}empty page without UI{{/sl}}|(% style="color:orange" %)similar
67 |{{sl id="HReloadofemptypagewithUI"}}empty page with UI{{/sl}}|(% style="color:green" %)-23%
68 |{{sl id="HReloadofMain.WebHomewithoutUI"}}Main.WebHome without UI{{/sl}}|(% style="color:orange" %)similar
69 |{{sl id="HReloadofMain.WebHomewithUI"}}Main.WebHome with UI{{/sl}}|(% style="color:green" %)-20%
70 |(% rowspan="5" %){{sl}}SOLR{{/sl}}|{{sl}}Full SOLR reindex{{/sl}}|(% style="color:orange" %)similar
71 |{{sl id="Hwhenindexisempty"}}SOLR sync when index is empty{{/sl}}|(% style="color:red" %)x2
72 |{{sl id="Hwhenthereisnothingtodo"}}SOLR sync when there is nothing to do{{/sl}}|(% style="color:red" %)+23%
73 |{{sl}}Result of search finding lots of results{{/sl}}|(% style="color:green" %)slightly faster
74 |{{sl}}Result of search finding one result{{/sl}}|(% style="color:green" %)slightly faster
Thomas Mortagne 240.23 75 |(% rowspan="2" %){{sl}}Rendering{{/sl}}|{{sl}}Page with 1000 macros without UI{{/sl}}|(% style="color:orange" %)similar
Thomas Mortagne 240.22 76 |{{sl}}Page with 1000 html macros without UI{{/sl}}|(% style="color:orange" %)similar
77 |(% rowspan="2" %){{sl}}Wiki creation{{/sl}}|{{sl}}From flavor{{/sl}}|(% style="color:red" %)slightly slower
78 |{{sl}}From template{{/sl}}|(% style="color:red" %)slightly slower
Thomas Mortagne 68.1 79
Thomas Mortagne 177.1 80 === Memory ===
Thomas Mortagne 68.1 81
Thomas Mortagne 92.1 82 |=(% width="450" %)Actions|=Difference
Thomas Mortagne 240.22 83 |{{sl}}Heap Memory after jetty startup{{/sl}}|(% style="color:red" %) +8M used
84 |{{sl}}Heap Memory after full SOLR index{{/sl}}|(% style="color:red" %) +23M
Thomas Mortagne 64.1 85
Thomas Mortagne 177.1 86 == Jetty startup ==
Thomas Mortagne 1.1 87
Thomas Mortagne 210.14 88 Unit: seconds
Thomas Mortagne 27.2 89
Thomas Mortagne 199.2 90 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}}.
Thomas Mortagne 10.1 91
Thomas Mortagne 240.8 92 * {{previous/}}: 7707
Thomas Mortagne 240.19 93 * {{next/}}: 7988
Thomas Mortagne 9.1 94
Thomas Mortagne 177.1 95 == First access ==
Thomas Mortagne 1.1 96
Thomas Mortagne 113.5 97 First HTTP request after restarting Jetty.
Thomas Mortagne 10.1 98
Thomas Mortagne 177.1 99 === First access to not existing page without UI ===
Thomas Mortagne 1.1 100
Thomas Mortagne 157.2 101 (/xwiki/bin/get/NoSpace/NoPage)
102
Thomas Mortagne 240.9 103 Unit: milliseconds
Thomas Mortagne 27.2 104
Thomas Mortagne 19.1 105 Firefox network statistics to load the root resource (image/js/css/etc. resources are not taken into account).
106
Thomas Mortagne 240.9 107 * {{previous/}}: 4893
Thomas Mortagne 240.16 108 * {{next/}}: 4648
Thomas Mortagne 9.1 109
Thomas Mortagne 177.1 110 === First access to not existing page with UI ===
Thomas Mortagne 19.1 111
Thomas Mortagne 157.2 112 (/xwiki/bin/view/NoSpace/NoPage)
113
Thomas Mortagne 27.1 114 Unit: seconds
Thomas Mortagne 19.1 115
Thomas Mortagne 26.1 116 Done by hand with a chronometer (image/js/css/etc. resources are not taken into account).
117
Thomas Mortagne 240.9 118 * {{previous/}}: 10
Thomas Mortagne 240.17 119 * {{next/}}: 9
Thomas Mortagne 19.1 120
Thomas Mortagne 177.1 121 == Reload ==
Thomas Mortagne 1.1 122
Thomas Mortagne 157.6 123 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).
Thomas Mortagne 10.1 124
Thomas Mortagne 177.1 125 === Reload of not existing page without UI ===
Thomas Mortagne 1.1 126
Thomas Mortagne 157.2 127 {{code language="none"}}
Thomas Mortagne 240.4 128 dumbbench --float -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/NoSpace/NoPage"
Thomas Mortagne 157.2 129 {{/code}}
130
Thomas Mortagne 9.1 131 Unit: milliseconds
Thomas Mortagne 1.1 132
Thomas Mortagne 240.5 133 * {{previous/}}: 5
Thomas Mortagne 240.15 134 * {{next/}}: 5
Thomas Mortagne 9.1 135
Thomas Mortagne 177.1 136 === Reload of not existing page with UI ===
Thomas Mortagne 1.1 137
Thomas Mortagne 157.2 138 {{code language="none"}}
Thomas Mortagne 236.4 139 dumbbench --float -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/NoSpace/NoPage"
Thomas Mortagne 157.2 140 {{/code}}
141
Thomas Mortagne 9.1 142 Unit: milliseconds
Thomas Mortagne 1.1 143
Thomas Mortagne 240.5 144 * {{previous/}}: 96
Thomas Mortagne 240.15 145 * {{next/}}: 68
Thomas Mortagne 9.1 146
Thomas Mortagne 210.3 147 === Reload of empty page without UI ===
Thomas Mortagne 199.16 148
149 {{code language="none"}}
Thomas Mortagne 240.4 150 dumbbench --float -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/EmptySpace/EmptyPage"
Thomas Mortagne 199.16 151 {{/code}}
152
153 Unit: milliseconds
154
Thomas Mortagne 240.5 155 * {{previous/}}: 4
Thomas Mortagne 240.15 156 * {{next/}}: 4
Thomas Mortagne 199.16 157
Thomas Mortagne 210.3 158 === Reload of empty page with UI ===
Thomas Mortagne 199.16 159
160 {{code language="none"}}
Thomas Mortagne 236.4 161 dumbbench --float -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/EmptySpace/EmptyPage"
Thomas Mortagne 199.16 162 {{/code}}
163
164 Unit: milliseconds
165
Thomas Mortagne 240.5 166 * {{previous/}}: 90
Thomas Mortagne 240.15 167 * {{next/}}: 69
Thomas Mortagne 199.16 168
Thomas Mortagne 199.18 169 === Reload of Main.WebHome without UI ===
Thomas Mortagne 34.1 170
Thomas Mortagne 157.2 171 {{code language="none"}}
Thomas Mortagne 240.4 172 dumbbench --float -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/Main/WebHome"
Thomas Mortagne 157.2 173 {{/code}}
174
Thomas Mortagne 38.1 175 Unit: milliseconds
176
Thomas Mortagne 240.5 177 * {{previous/}}: 6
Thomas Mortagne 240.15 178 * {{next/}}: 6
Thomas Mortagne 34.1 179
Thomas Mortagne 199.18 180 === Reload of Main.WebHome with UI ===
181
Thomas Mortagne 157.2 182 {{code language="none"}}
Thomas Mortagne 236.4 183 dumbbench --float -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/WebHome"
Thomas Mortagne 157.2 184 {{/code}}
185
Thomas Mortagne 38.1 186 Unit: milliseconds
187
Thomas Mortagne 240.5 188 * {{previous/}}: 89
Thomas Mortagne 240.15 189 * {{next/}}: 71
Thomas Mortagne 38.1 190
Thomas Mortagne 177.1 191 == SOLR ==
Thomas Mortagne 1.1 192
Thomas Mortagne 177.1 193 === Full SOLR reindex ===
Thomas Mortagne 1.1 194
Thomas Mortagne 27.2 195 Unit: seconds
Thomas Mortagne 1.1 196
Thomas Mortagne 62.1 197 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).
Thomas Mortagne 56.1 198
Thomas Mortagne 240.12 199 * {{previous/}}: 172
Thomas Mortagne 240.21 200 * {{next/}}: 180
Thomas Mortagne 27.2 201
Thomas Mortagne 177.1 202 === SOLR sync ===
Thomas Mortagne 1.1 203
Thomas Mortagne 29.1 204 Only the thread determining what need to be indexed and not the actual indexing.
205
Thomas Mortagne 240.11 206 ##<perm dir>/data/jobs/status/solr/indexer/status.xml##
207
Thomas Mortagne 177.1 208 ==== when index is empty ====
Thomas Mortagne 30.1 209
Thomas Mortagne 240.10 210 Unit: nanoseconds
211
Thomas Mortagne 240.13 212 * {{previous/}}: 1388519706
Thomas Mortagne 240.20 213 * {{next/}}: 2860309938
Thomas Mortagne 28.1 214
Thomas Mortagne 177.1 215 ==== when there is nothing to do ====
Thomas Mortagne 28.1 216
Thomas Mortagne 240.10 217 Unit: nanoseconds
Thomas Mortagne 28.1 218
Thomas Mortagne 240.11 219 * {{previous/}}: 583027285
Thomas Mortagne 240.16 220 * {{next/}}: 721834804
Thomas Mortagne 27.2 221
Thomas Mortagne 177.1 222 === Search ===
Thomas Mortagne 124.1 223
Thomas Mortagne 157.6 224 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).
Thomas Mortagne 124.1 225
226 Unit: milliseconds
227
Thomas Mortagne 177.1 228 ==== Result of search finding lots of results ====
Thomas Mortagne 124.1 229
Thomas Mortagne 128.2 230 Login with Admin user and make sure hidden document display is enabled.
231
Thomas Mortagne 157.4 232 {{code language="none"}}
Thomas Mortagne 228.4 233 dumbbench --float -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=*"
Thomas Mortagne 157.4 234 {{/code}}
Thomas Mortagne 128.2 235
Thomas Mortagne 240.5 236 * {{previous/}}: 172
Thomas Mortagne 240.15 237 * {{next/}}: 150
Thomas Mortagne 124.1 238
Thomas Mortagne 177.1 239 ==== Result of search finding one result ====
Thomas Mortagne 124.1 240
Thomas Mortagne 157.4 241 {{code language="none"}}
Thomas Mortagne 228.4 242 dumbbench --float -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"
Thomas Mortagne 157.4 243 {{/code}}
Thomas Mortagne 128.2 244
Thomas Mortagne 240.5 245 * {{previous/}}: 126
Thomas Mortagne 240.15 246 * {{next/}}: 106
Thomas Mortagne 124.1 247
Thomas Mortagne 177.1 248 == Rendering ==
Thomas Mortagne 1.1 249
Thomas Mortagne 177.1 250 === Page with 1000 macros without UI ===
Thomas Mortagne 1.1 251
Thomas Mortagne 157.4 252 {{code language="none"}}
Thomas Mortagne 228.4 253 dumbbench --float -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"
Thomas Mortagne 157.4 254 {{/code}}
255
Thomas Mortagne 149.15 256 Unit: milliseconds
Thomas Mortagne 2.1 257
Thomas Mortagne 240.5 258 * {{previous/}}: 60
Thomas Mortagne 240.15 259 * {{next/}}: 56
Thomas Mortagne 27.2 260
Thomas Mortagne 177.1 261 === Page with 1000 html macros without UI ===
Thomas Mortagne 135.7 262
Thomas Mortagne 157.4 263 {{code language="none"}}
Thomas Mortagne 228.4 264 dumbbench --float -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"
Thomas Mortagne 157.4 265 {{/code}}
266
Thomas Mortagne 149.15 267 Unit: milliseconds
Thomas Mortagne 135.7 268
Thomas Mortagne 240.5 269 * {{previous/}}: 800
Thomas Mortagne 240.15 270 * {{next/}}: 804
Thomas Mortagne 135.7 271
Thomas Mortagne 229.4 272 == Wiki creation ==
273
Thomas Mortagne 240.7 274 Unit: nanoseconds
Thomas Mortagne 229.5 275
Thomas Mortagne 229.4 276 === From flavor ===
277
Thomas Mortagne 240.7 278 Create the wiki ##test1## from default flavor and get the time spend from the job (##</rootStep>## in ##<permdir>/jobs/status/wikicreation/createandinstall/test1/status.xml##).
Thomas Mortagne 229.4 279
Thomas Mortagne 240.7 280 * {{previous/}}: 11789359234
Thomas Mortagne 240.15 281 * {{next/}}: 12999789138
Thomas Mortagne 229.4 282
283 === From template ===
284
Thomas Mortagne 240.6 285 Make ##test1## a template wiki.
Thomas Mortagne 240.5 286
Thomas Mortagne 240.7 287 Create the wiki ##test2## from wiki ##test1## and get the time spend from the job (##</rootStep>## in ##<permdir>/jobs/status/wikicreation/createandinstall/test2/status.xml##).
Thomas Mortagne 229.4 288
Thomas Mortagne 240.7 289 * {{previous/}}: 15814358918
Thomas Mortagne 240.15 290 * {{next/}}: 18655438361
Thomas Mortagne 229.4 291
Thomas Mortagne 177.1 292 == Heap Memory ==
Thomas Mortagne 1.1 293
Thomas Mortagne 46.1 294 Attach Yourkit to get the information.
Thomas Mortagne 27.2 295
296 Unit: MB
297
Thomas Mortagne 177.1 298 === Heap Memory after jetty startup ===
Thomas Mortagne 46.1 299
Thomas Mortagne 223.5 300 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 "used".
Thomas Mortagne 46.1 301
Thomas Mortagne 240.8 302 * {{previous/}}: 63 used, 546 allocated
Thomas Mortagne 240.19 303 * {{next/}}: 71 used, 497 allocated
Thomas Mortagne 27.2 304
Thomas Mortagne 177.1 305 === Heap Memory after full SOLR index ===
Thomas Mortagne 12.1 306
Thomas Mortagne 223.5 307 Delete the data/solr folder, restart, load home page then wait until nothing is happening in background. Force garbage collector before looking at "used".
Thomas Mortagne 42.1 308
Thomas Mortagne 27.2 309 Unit: MB
310
Thomas Mortagne 240.14 311 * {{previous/}}: 198 used, 822 allocated
Thomas Mortagne 240.21 312 * {{next/}}: 221 used, 755 allocated

Get Connected