From 812dce0333cad8256e089a5d8ec45dad077245f7 Mon Sep 17 00:00:00 2001 From: Sona Sarmadi Date: Thu, 13 Sep 2018 09:25:26 +0200 Subject: Add Benchmark results And some minor changes. Change-Id: I9969eef4025c09082adc86f88b2e496425efb598 Signed-off-by: Sona Sarmadi --- .../doc/real_time_in_enea_linux.xml | 572 ++++++++++++++++++++- .../doc/using_enea_linux.xml | 13 +- 2 files changed, 563 insertions(+), 22 deletions(-) (limited to 'doc') 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 @@ - + Real-Time in Enea Linux - Additional packages providded by RT profile: + The Enea Linux Standard and Real-Time Profiles are based + on the same Yocto (poky) version but differ in kernel needs. The RT Profile uses the Intel 4.14/preempt-rt kernel. - - - bitcalc, 1.0-r0.0 - + + Addtional packages provided in the RT profile - - count-ticks, 1.1-r1.0 - + + - - partrt, 1.1-r0.0 - - + + + Package + Version + Description + + -
+
+ + bitcalc + 1.0-r0.0 + Tool for understanding bit calculations and + visualizing to binary, hex and decimal. + + + + count-ticks + 1.1-r1.0 + Counts the number of kernel ticks during command execution. + + + + partrt + 1.1-r0.0 + Tool for dividing a SMP Linux system into a real + time domain and a non-real time domain. + + + + cyclictest + + A testing tool for evaluating relative performance of RT systems. + + + + stress + + A simple workload generator for POSIX systems. + + + +
+ + For the detailed list of packages provided in both Standard and RT + profiles along with package versions, please refer to the manifest files located in + <build_dir>/tmp/deploy/images/<target>. + +
Benchmark - TBD. + The worst case latency benchmark uses a combination of tools: cyclictest, and stress. The values of buffer sizes configured for use in the latter tool are chosen + 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. + +
+ Benchmark Details + + The combination of cyclictest and stress has been used for the + benchmarking presented in this document. Details are given in the tables presented below. + + + Stress scenarios + + + + + + Id + + + + Command + + + + Description + + + + + + cpu + + + ./stress -c <n> + + <n> worker threads spinning on sqrt() + + + + + hdd + + + ./stress -d <n> --hdd-bytes 20M + + <n> worker threads spinning on write()/unlink(). + Each worker writes 20MB. + + + + + io + + + ./stress -i <n> + + <n> worker threads spinning on sync() + + + + + vm + + + ./stress -m <n> --vm-bytes 10M + + <n> worker threads spinning on malloc()/free(). + Buffer size: 15MB + + + + + full + + + ./stress -c <n> -i <n> -m <n> + --vm-bytes 15M + + <n> worker threads each doing the cpu, io & vm + stress. Buffer sizes are malloc: 256MB, write: 15MB. + + + +
+
+ +
+ Stress Testcases + + Below you will find several testcases for an RT image. + + + <emphasis role="bold">Test 1 (RT image)</emphasis> + + # Test case (1/6): rt_bmark.intlat.no_stress +# .............................................................................. +# No stress requested +# Starting cyclictest +# Command: cyclictest -S -p 99 -q -i 100 -d 20 -l 30000 +.... +.... +# Min: 2 us +# Avg: 3.0 us +# Max: 15 us +# Max list: [5, 6, 7, 9, 10, 15] +# PASS + + + + + <emphasis role="bold">Test 2 (RT image)</emphasis> + + # Test case (2/6): rt_bmark.intlat.cpu +# .............................................................................. +# Starting stress(cpu) +# Command: 'stress -c 8' +# Starting cyclictest +# Command: cyclictest -S -p 99 -q -i 100 -d 20 -l 30000 +.... +.... +# Min: 2 us +# Avg: 2.0 us +# Max: 11 us +# Max list: [4, 5, 6, 9, 10, 11] +# PASS + + + + <emphasis role="bold">Test 3 (RT image)</emphasis> + # Test case (3/6): rt_bmark.intlat.hdd +# .............................................................................. +# Starting stress(hdd) +# Command: 'stress -d 8 --hdd-bytes 20M' +# Starting cyclictest +# Command: cyclictest -S -p 99 -q -i 100 -d 20 -l 30000 +.... +.... +# Min: 2 us +# Avg: 2.7 us +# Max: 14 us +# Max list: [9, 10, 11, 12, 14, 14] +# PASS + + + + <emphasis role="bold">Test 4 (RT image)</emphasis> + # Test case (4/6): rt_bmark.intlat.io +# .............................................................................. +# Starting stress(io) +# Command: 'stress -i 8' +# Starting cyclictest +# Command : cyclictest -S -p 99 -q -i 100 -d 20 -l 30000 +.... +.... +# Min: 2 us +# Avg: 3.0 us +# Max: 15 us +# Max list: [8, 9, 10, 12, 12, 15] +# PASS + + + + <emphasis role="bold">Test 5 (RT image)</emphasis> + # Test case (5/6): rt_bmark.intlat.vm +# .............................................................................. +# Starting stress(vm) +# Command: 'stress -m 8 --vm-bytes 10M' +# Starting cyclictest +# Command: cyclictest -S -p 99 -q -i 100 -d 20 -l 30000 +.... +.... +# Min: 2 us +# Avg: 4.2 us +# Max: 15 us +# Max list: [10, 12, 12, 13, 13, 15] + # PASS + + + <emphasis role="bold">Test 6 (RT image)</emphasis> + # Test case (6/6): rt_bmark.intlat.full +# .............................................................................. +# Starting stress(io+cpu+hdd+vm) +# Command: 'stress -i 8 -c 8 -d 8 --hdd-bytes 20M -m 8 --vm-bytes 10M' +# Starting cyclictest +# Command : cyclictest -S -p 99 -q -i 100 -d 20 -l 30000 +.... +.... +# Min: 2 us +# Avg: 3.5 us +# Max: 19 us +# Max list: [12, 14, 15, 16, 18, 19] +# PASS + +
+ + Repeat these tests for the Standard image and compare the results + (see the following tables). + + + Benchmark Numbers for the Standard Image + + + + + + + + + + + + + + + + + + + + Latency [µs] + + + + Stress Type + + + + + + no stress + + + + cpu + + + + Io + + + + vm + + + + hdd + + + + full + + + + + + + + Min + + + + 2 us + + + + 2 us + + + + 1 us + + + + 2 us + + + + 1 us + + + + 2 us + + + + + + average + + + + 2.9 us + + + + 2.0 us + + + + 2.7 us + + + + 4.2 us + + + + 3.0 us + + + + 4.5 us + + + + + + max + + + + 262 us + + + + 82 us + + + + 101 us + + + + 776 us + + + + 122 us + + + + 1428 us + + + + +
+ + + Benchmark Numbers for the RT Image + + + + + + + + + + + + + + + + + + + + Latency [µs] + + + + Stress Type + + + + + + no stress + + + + cpu + + + + Io + + + + vm + + + + hdd + + + + full + + + + + + + + Min + + + + 2 us + + + + 2 us + + + + 2 us + + + + 2 us + + + + 2 us + + + + 2 us + + + + + + average + + + + 3.0 us + + + + 2.0 us + + + + 3.0 us + + + + 4.3 us + + + + 2.7 us + + + + 3.5 us + + + + + + max + + + + 15 us + + + + 13 us + + + + 42 us + + + + 20 us + + + + 16 us + + + + 32 us + + + + +
-
\ No newline at end of file + 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 @@ sections:
- Building the images + Building Real-Time images - Build Enea Linux images using the following steps: + Real-Time images use the Intel RT kernel, no additional configuration is needed. + + How to Build an Enea Linux RT image @@ -54,7 +56,7 @@ $ TEMPLATECONF=meta-el-rt/conf/template.<machine> \ - Build Enea Linux image + Build Enea Linux RT image # You have already initiated the build environment and are in the <build_dir> $ bitbake <enea-image-name> @@ -174,7 +176,7 @@ $ cd <build_dir>/tmp/deploy/sdk/ # Here is the SDK installer script
- Boot via PXE using DHCP, TFTP, and NFS servers + Booting via PXE Below you find an example of how to boot Enea Linux in a target supporting PXE. The PXE boot is handled by the target BIOS. @@ -284,8 +286,7 @@ label device01 Populate the root file system in the NFS directory by - unpacking - enea-image-rt-intel-corei7-64.tar.gz + unpacking enea-image-rt-intel-corei7-64.tar.gz found at <build_dir>/tmp/deploy/images/<target>/. -- cgit v1.2.3-54-g00ecf