summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSona Sarmadi <sona.sarmadi@enea.com>2018-09-13 09:25:26 +0200
committerMiruna Paun <Miruna.Paun@enea.com>2018-09-18 12:33:57 +0200
commit812dce0333cad8256e089a5d8ec45dad077245f7 (patch)
treec5c940593fe227f3688750ebd758e968b0f8a85a
parentf9f830c1830a4cdada327f520d2dc276eddbe9ce (diff)
downloadel_releases-rt-812dce0333cad8256e089a5d8ec45dad077245f7.tar.gz
Add Benchmark results
And some minor changes. Change-Id: I9969eef4025c09082adc86f88b2e496425efb598 Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
-rw-r--r--doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml572
-rw-r--r--doc/book-enea-linux-user-guide/doc/using_enea_linux.xml13
2 files changed, 563 insertions, 22 deletions
diff --git a/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml b/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml
index 8f3ada0..afc3d33 100644
--- a/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml
+++ b/doc/book-enea-linux-user-guide/doc/real_time_in_enea_linux.xml
@@ -1,26 +1,566 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="real_time"> 2<chapter id="real_time">
3 <title>Real-Time in Enea Linux</title> 3 <title>Real-Time in Enea Linux</title>
4 4
5 <para>Additional packages providded by RT profile:</para> 5 <para>The Enea Linux Standard and Real-Time Profiles are based
6 on the same Yocto (poky) version but differ in kernel needs. The RT Profile uses the <ulink
7 url="https://github.com/intel/linux-intel-lts/wiki">Intel 4.14/preempt-rt kernel</ulink>.</para>
6 8
7 <itemizedlist> 9 <table>
8 <listitem> 10 <title>Addtional packages provided in the RT profile</title>
9 <para>bitcalc, 1.0-r0.0</para>
10 </listitem>
11 11
12 <listitem> 12 <tgroup cols="3">
13 <para>count-ticks, 1.1-r1.0</para> 13 <colspec align="center" />
14 </listitem>
15 14
16 <listitem> 15 <thead>
17 <para>partrt, 1.1-r0.0</para> 16 <row>
18 </listitem> 17 <entry align="center">Package</entry>
19 </itemizedlist> 18 <entry align="center">Version</entry>
19 <entry align="center">Description</entry>
20 </row>
21 </thead>
20 22
21 <section id="Benchmark"> 23 <tbody>
24 <row>
25 <entry>bitcalc</entry>
26 <entry>1.0-r0.0</entry>
27 <entry>Tool for understanding bit calculations and
28 visualizing to binary, hex and decimal.</entry>
29 </row>
30
31 <row>
32 <entry>count-ticks</entry>
33 <entry>1.1-r1.0</entry>
34 <entry>Counts the number of kernel ticks during command execution.</entry>
35 </row>
36
37 <row>
38 <entry>partrt</entry>
39 <entry>1.1-r0.0</entry>
40 <entry>Tool for dividing a SMP Linux system into a real
41 time domain and a non-real time domain.</entry>
42 </row>
43
44 <row>
45 <entry>cyclictest</entry>
46 <entry></entry>
47 <entry>A testing tool for evaluating relative performance of RT systems.</entry>
48 </row>
49
50 <row>
51 <entry>stress</entry>
52 <entry></entry>
53 <entry>A simple workload generator for POSIX systems.</entry>
54 </row>
55 </tbody>
56 </tgroup>
57 </table>
58
59 <para>For the detailed list of packages provided in both Standard and RT
60 profiles along with package versions, please refer to the manifest files located in
61 <literal>&lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;</literal>.</para>
62
63 <section id="benchmark">
22 <title>Benchmark</title> 64 <title>Benchmark</title>
23 65
24 <para>TBD.</para> 66 <para>The worst case latency benchmark uses a combination of tools: <ulink
67 url="https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start">cyclictest</ulink>, and <ulink
68 url="http://people.seas.harvard.edu/~apw/stress">stress</ulink>. The values of buffer sizes configured for use in the latter tool are chosen
69 both to generate a stessful load on a network via NFS traffic in the hdd test, and in an attempt to resemble a real life embedded application.</para>
70
71 <section id="benchmark_details">
72 <title>Benchmark Details</title>
73
74 <para>The combination of <emphasis role="bold">cyclictest</emphasis> and <emphasis role="bold">stress</emphasis> has been used for the
75 benchmarking presented in this document. Details are given in the tables presented below.</para>
76
77 <table>
78 <title>Stress scenarios</title>
79
80 <tgroup cols="3">
81 <tbody>
82 <row>
83 <entry align="center">
84 <emphasis role="bold">Id</emphasis>
85 </entry>
86
87 <entry align="center">
88 <emphasis role="bold">Command</emphasis>
89 </entry>
90
91 <entry align="center">
92 <emphasis role="bold">Description</emphasis>
93 </entry>
94 </row>
95
96 <row>
97 <entry role="bold">
98 <emphasis role="bold">cpu</emphasis>
99 </entry>
100
101 <entry>./stress -c &lt;n&gt;</entry>
102
103 <entry>&lt;n&gt; worker threads spinning on sqrt()</entry>
104 </row>
105
106 <row>
107 <entry>
108 <emphasis role="bold">hdd</emphasis>
109 </entry>
110
111 <entry>./stress -d &lt;n&gt; --hdd-bytes 20M</entry>
112
113 <entry>&lt;n&gt; worker threads spinning on write()/unlink().
114 Each worker writes 20MB.</entry>
115 </row>
116
117 <row>
118 <entry role="bold">
119 <emphasis role="bold">io</emphasis>
120 </entry>
121
122 <entry>./stress -i &lt;n&gt;</entry>
123
124 <entry>&lt;n&gt; worker threads spinning on sync()</entry>
125 </row>
126
127 <row>
128 <entry role="bold">
129 <emphasis role="bold">vm</emphasis>
130 </entry>
131
132 <entry>./stress -m &lt;n&gt; --vm-bytes 10M</entry>
133
134 <entry>&lt;n&gt; worker threads spinning on malloc()/free().
135 Buffer size: 15MB</entry>
136 </row>
137
138 <row>
139 <entry role="bold">
140 <emphasis role="bold">full</emphasis>
141 </entry>
142
143 <entry>./stress -c &lt;n&gt; -i &lt;n&gt; -m &lt;n&gt;
144 --vm-bytes 15M</entry>
145
146 <entry>&lt;n&gt; worker threads each doing the cpu, io &amp; vm
147 stress. Buffer sizes are malloc: 256MB, write: 15MB.</entry>
148 </row>
149 </tbody>
150 </tgroup>
151 </table>
152 </section>
153
154 <section id="run_tests">
155 <title>Stress Testcases</title>
156
157 <para>Below you will find several testcases for an RT image.</para>
158
159 <example id="testcase_one">
160 <title><emphasis role="bold">Test 1 (RT image)</emphasis></title>
161
162 <para><programlisting># Test case (1/6): rt_bmark.intlat.no_stress
163# ..............................................................................
164# No stress requested
165# Starting cyclictest
166# Command: cyclictest -S -p 99 -q -i 100 -d 20 -l 30000
167....
168....
169# Min: 2 us
170# Avg: 3.0 us
171# Max: 15 us
172# Max list: [5, 6, 7, 9, 10, 15]
173# PASS
174
175 </programlisting></para></example>
176
177 <example id="testcase_two">
178 <title><emphasis role="bold">Test 2 (RT image)</emphasis></title>
179
180 <para><programlisting># Test case (2/6): rt_bmark.intlat.cpu
181# ..............................................................................
182# Starting stress(cpu)
183# Command: 'stress -c 8'
184# Starting cyclictest
185# Command: cyclictest -S -p 99 -q -i 100 -d 20 -l 30000
186....
187....
188# Min: 2 us
189# Avg: 2.0 us
190# Max: 11 us
191# Max list: [4, 5, 6, 9, 10, 11]
192# PASS
193</programlisting></para></example>
194
195 <example id="testcase_three">
196 <title><emphasis role="bold">Test 3 (RT image)</emphasis></title>
197 <para><programlisting># Test case (3/6): rt_bmark.intlat.hdd
198# ..............................................................................
199# Starting stress(hdd)
200# Command: 'stress -d 8 --hdd-bytes 20M'
201# Starting cyclictest
202# Command: cyclictest -S -p 99 -q -i 100 -d 20 -l 30000
203....
204....
205# Min: 2 us
206# Avg: 2.7 us
207# Max: 14 us
208# Max list: [9, 10, 11, 12, 14, 14]
209# PASS
210</programlisting></para></example>
211
212 <example id="testcase_four">
213 <title><emphasis role="bold">Test 4 (RT image)</emphasis></title>
214 <para><programlisting># Test case (4/6): rt_bmark.intlat.io
215# ..............................................................................
216# Starting stress(io)
217# Command: 'stress -i 8'
218# Starting cyclictest
219# Command : cyclictest -S -p 99 -q -i 100 -d 20 -l 30000
220....
221....
222# Min: 2 us
223# Avg: 3.0 us
224# Max: 15 us
225# Max list: [8, 9, 10, 12, 12, 15]
226# PASS
227 </programlisting></para></example>
228
229 <example id="testcase_five">
230 <title><emphasis role="bold">Test 5 (RT image)</emphasis></title>
231 <para><programlisting># Test case (5/6): rt_bmark.intlat.vm
232# ..............................................................................
233# Starting stress(vm)
234# Command: 'stress -m 8 --vm-bytes 10M'
235# Starting cyclictest
236# Command: cyclictest -S -p 99 -q -i 100 -d 20 -l 30000
237....
238....
239# Min: 2 us
240# Avg: 4.2 us
241# Max: 15 us
242# Max list: [10, 12, 12, 13, 13, 15]
243 # PASS</programlisting></para></example>
244
245 <example id="testcase_six">
246 <title><emphasis role="bold">Test 6 (RT image)</emphasis></title>
247 <para><programlisting># Test case (6/6): rt_bmark.intlat.full
248# ..............................................................................
249# Starting stress(io+cpu+hdd+vm)
250# Command: 'stress -i 8 -c 8 -d 8 --hdd-bytes 20M -m 8 --vm-bytes 10M'
251# Starting cyclictest
252# Command : cyclictest -S -p 99 -q -i 100 -d 20 -l 30000
253....
254....
255# Min: 2 us
256# Avg: 3.5 us
257# Max: 19 us
258# Max list: [12, 14, 15, 16, 18, 19]
259# PASS
260 </programlisting></para></example>
261 </section>
262
263 <para>Repeat these tests for the Standard image and compare the results
264 (see the following tables).</para>
265
266 <table>
267 <title>Benchmark Numbers for the Standard Image</title>
268
269 <tgroup align="center" cols="7">
270 <colspec />
271
272 <colspec colname="2" />
273
274 <colspec />
275
276 <colspec />
277
278 <colspec />
279
280 <colspec />
281
282 <colspec colname="7" />
283
284 <thead>
285 <row>
286 <entry morerows="1" valign="middle">
287 <para>Latency [µs]</para>
288 </entry>
289
290 <entry nameend="7" namest="2">
291 <para>Stress Type</para>
292 </entry>
293 </row>
294
295 <row>
296 <entry>
297 <para>no stress</para>
298 </entry>
299
300 <entry>
301 <para>cpu</para>
302 </entry>
303
304 <entry>
305 <para>Io</para>
306 </entry>
307
308 <entry>
309 <para>vm</para>
310 </entry>
311
312 <entry>
313 <para>hdd</para>
314 </entry>
315
316 <entry>
317 <para>full</para>
318 </entry>
319 </row>
320 </thead>
321
322 <tbody>
323 <row>
324 <entry>
325 <para>Min</para>
326 </entry>
327
328 <entry>
329 <para>2 us</para>
330 </entry>
331
332 <entry>
333 <para>2 us</para>
334 </entry>
335
336 <entry>
337 <para>1 us</para>
338 </entry>
339
340 <entry>
341 <para>2 us</para>
342 </entry>
343
344 <entry>
345 <para>1 us</para>
346 </entry>
347
348 <entry>
349 <para>2 us</para>
350 </entry>
351 </row>
352
353 <row>
354 <entry>
355 <para>average</para>
356 </entry>
357
358 <entry>
359 <para>2.9 us</para>
360 </entry>
361
362 <entry>
363 <para>2.0 us</para>
364 </entry>
365
366 <entry>
367 <para>2.7 us</para>
368 </entry>
369
370 <entry>
371 <para>4.2 us</para>
372 </entry>
373
374 <entry>
375 <para>3.0 us</para>
376 </entry>
377
378 <entry>
379 <para>4.5 us</para>
380 </entry>
381 </row>
382
383 <row>
384 <entry>
385 <para>max</para>
386 </entry>
387
388 <entry>
389 <para>262 us</para>
390 </entry>
391
392 <entry>
393 <para>82 us</para>
394 </entry>
395
396 <entry>
397 <para>101 us</para>
398 </entry>
399
400 <entry>
401 <para>776 us</para>
402 </entry>
403
404 <entry>
405 <para>122 us</para>
406 </entry>
407
408 <entry>
409 <para>1428 us</para>
410 </entry>
411 </row>
412 </tbody>
413 </tgroup>
414 </table>
415
416 <table>
417 <title>Benchmark Numbers for the RT Image</title>
418
419 <tgroup align="center" cols="7">
420 <colspec />
421
422 <colspec colname="2" />
423
424 <colspec />
425
426 <colspec />
427
428 <colspec />
429
430 <colspec />
431
432 <colspec colname="7" />
433
434 <thead>
435 <row>
436 <entry morerows="1" valign="middle">
437 <para>Latency [µs]</para>
438 </entry>
439
440 <entry nameend="7" namest="2">
441 <para>Stress Type</para>
442 </entry>
443 </row>
444
445 <row>
446 <entry>
447 <para>no stress</para>
448 </entry>
449
450 <entry>
451 <para>cpu</para>
452 </entry>
453
454 <entry>
455 <para>Io</para>
456 </entry>
457
458 <entry>
459 <para>vm</para>
460 </entry>
461
462 <entry>
463 <para>hdd</para>
464 </entry>
465
466 <entry>
467 <para>full</para>
468 </entry>
469 </row>
470 </thead>
471
472 <tbody>
473 <row>
474 <entry>
475 <para>Min</para>
476 </entry>
477
478 <entry>
479 <para>2 us</para>
480 </entry>
481
482 <entry>
483 <para>2 us</para>
484 </entry>
485
486 <entry>
487 <para>2 us</para>
488 </entry>
489
490 <entry>
491 <para>2 us</para>
492 </entry>
493
494 <entry>
495 <para>2 us</para>
496 </entry>
497
498 <entry>
499 <para>2 us</para>
500 </entry>
501 </row>
502
503 <row>
504 <entry>
505 <para>average</para>
506 </entry>
507
508 <entry>
509 <para>3.0 us</para>
510 </entry>
511
512 <entry>
513 <para>2.0 us</para>
514 </entry>
515
516 <entry>
517 <para>3.0 us</para>
518 </entry>
519
520 <entry>
521 <para>4.3 us</para>
522 </entry>
523
524 <entry>
525 <para>2.7 us</para>
526 </entry>
527
528 <entry>
529 <para>3.5 us</para>
530 </entry>
531 </row>
532
533 <row>
534 <entry>
535 <para>max</para>
536 </entry>
537
538 <entry>
539 <para>15 us</para>
540 </entry>
541
542 <entry>
543 <para>13 us</para>
544 </entry>
545
546 <entry>
547 <para>42 us</para>
548 </entry>
549
550 <entry>
551 <para>20 us</para>
552 </entry>
553
554 <entry>
555 <para>16 us</para>
556 </entry>
557
558 <entry>
559 <para>32 us</para>
560 </entry>
561 </row>
562 </tbody>
563 </tgroup>
564 </table>
25 </section> 565 </section>
26</chapter> \ No newline at end of file 566</chapter>
diff --git a/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml b/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml
index f22f6a2..0704dbf 100644
--- a/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml
+++ b/doc/book-enea-linux-user-guide/doc/using_enea_linux.xml
@@ -10,9 +10,11 @@
10 sections:</para> 10 sections:</para>
11 11
12 <section id="build_images"> 12 <section id="build_images">
13 <title>Building the images</title> 13 <title>Building Real-Time images</title>
14 14
15 <para>Build Enea Linux images using the following steps:</para> 15 <para>Real-Time images use the Intel RT kernel, no additional configuration is needed.</para>
16
17 <para><emphasis role="bold">How to Build an Enea Linux RT image</emphasis></para>
16 18
17 <procedure> 19 <procedure>
18 <step> 20 <step>
@@ -54,7 +56,7 @@ $ TEMPLATECONF=meta-el-rt/conf/template.&lt;machine&gt; \
54 </step> 56 </step>
55 57
56 <step> 58 <step>
57 <para>Build Enea Linux image</para> 59 <para>Build Enea Linux RT image</para>
58 60
59 <programlisting># You have already initiated the build environment and are in the &lt;build_dir&gt; 61 <programlisting># You have already initiated the build environment and are in the &lt;build_dir&gt;
60$ bitbake &lt;enea-image-name&gt; 62$ bitbake &lt;enea-image-name&gt;
@@ -174,7 +176,7 @@ $ cd &lt;build_dir&gt;/tmp/deploy/sdk/ # Here is the SDK installer script</prog
174 described in the following sections.</para> 176 described in the following sections.</para>
175 177
176 <section id="enea-linux-x86-pxe"> 178 <section id="enea-linux-x86-pxe">
177 <title>Boot via PXE using DHCP, TFTP, and NFS servers</title> 179 <title>Booting via PXE</title>
178 180
179 <para>Below you find an example of how to boot Enea Linux in a target 181 <para>Below you find an example of how to boot Enea Linux in a target
180 supporting PXE. The PXE boot is handled by the target BIOS.</para> 182 supporting PXE. The PXE boot is handled by the target BIOS.</para>
@@ -284,8 +286,7 @@ label device01
284 286
285 <listitem> 287 <listitem>
286 <para>Populate the root file system in the NFS directory by 288 <para>Populate the root file system in the NFS directory by
287 unpacking 289 unpacking <filename>enea-image-rt-intel-corei7-64.tar.gz</filename>
288 <filename>enea-image-rt-intel-corei7-64.tar.gz</filename>
289 found at 290 found at
290 <filename>&lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;/</filename>.</para> 291 <filename>&lt;build_dir&gt;/tmp/deploy/images/&lt;target&gt;/</filename>.</para>
291 </listitem> 292 </listitem>