MISC-TN-009: Characterizing the RAM bandwidth of Mito8M SoM
Info Box
|
![]() |
This technical note was validated against specific versions of hardware and software. What is described here may not work with other versions. | ![]() |
Contents
History[edit | edit source]
Version | Date | Notes |
---|---|---|
1.0.0 | January 2020 | First public release |
Introduction[edit | edit source]
Mito8M is the first DAVE Embedded Systems' system-on-module (SoM) based on a core implementing the ARMv8-A architecture. Traditionally, ARM cores that are based on 32-bit ARMv7-A architecture exhibit a limited RAM bandwidth even if they are coupled with 64-bit width SDRAM banks. As an example, please see this Technical Note where we characterized the SDRAM bandwidth of Cortex A9-based Axel Lite SoM. When dealing with computationally heavy tasks, a limited RAM bandwidth efficiency may turn out to be a severe bottleneck bounding the overall performance.
Besides an intrinsic increased computational power over their predecessors, ARMv8-A-based SoC's are also expected to improve RAM bandwidth significantly. This technical note (TN for short) illustrates several benchmark tests that were run on Mito8M SoM to characterize its bandwidth. It is worth to remember that Mito8M is built upon the i.MX8M processor by NXP.
Testbed general configuration[edit | edit source]
This section illustrates the configuration settings common to all the tests performed. Basically, the testbed that was used is the same described in this TN.
SoC and SDRAM bank[edit | edit source]
The SoC model is i.MX8M Quad:
armbian@Mito8M:~/devel/lmbench/tmp$ lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: ARM Model: 4 Model name: Cortex-A53 Stepping: r0p4 CPU max MHz: 1300.0000 CPU min MHz: 800.0000 BogoMIPS: 16.66 L1d cache: unknown size L1i cache: unknown size L2 cache: unknown size NUMA node0 CPU(s): 0-3 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
This processor is capable of running either at 800 MHz or 1.3 GHz. The tests were performed at either frequencies in order to determine how the it affects the RAM bandwidth.
The following table details the characteristics of the SDRAM bank connected to the SoC.
Subsystem | Feature | Platform |
---|---|---|
Mito8M | ||
SoC | SoC | NXP i.MX8M Quad |
ARM core(s) | 4 x Cortex A53 | |
ARM core frequency
[MHz] |
800 or 1300 | |
L1 cache (D)
[kB] |
32 | |
L1 cache (I)
[kB] |
32 | |
L2 cache
[MB] |
1 | |
SDRAM | Type | LPDDR4 |
Frequency
[MHz] |
1600 | |
Bus witdth
[bit] |
32 | |
Theoretical bandwidth
[Gb/s] |
102.4 | |
Theoretical bandwidth
[GB/s] |
12.8 | |
Size
[MB] |
3072 |
Software configuration[edit | edit source]
- Linux kernel: 4.14.98
- Root file system: Debian GNU/Linux 10 (buster)
- Architecture: aarch64
- Governor: userspace @ 800 MHz or 1300 MHz
root@Mito8M:~# echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor root@Mito8M:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor userspace root@Mito8M:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 800000
Some benchmarks were built natively on the platform under test. For the sake of completeness, the version of the GCC compiler is then indicated as well:
armbian@Mito8M:~/devel/lmbench$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/8/lto-wrapper Target: aarch64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --disable-libphobos --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu Thread model: posix gcc version 8.3.0 (Debian 8.3.0-6)
Overall results[edit | edit source]
This section illustrates the overall results achieved by the benchmarks.
STREAM[edit | edit source]
Function | Mito8M | Axel Lite
efficiency [%] | |
---|---|---|---|
Best rate
[MB/s] |
Efficiency
[%] | ||
Copy | 6770 | 51.7 | 14.0 |
Scale | 6093 | 46.5 | 13.8 |
Add | 5263 | 40.1 | 14.6 |
Triad | 4820 | 36.8 | 14.9 |
Function | Mito8M | Axel Lite
efficiency [%] | |
---|---|---|---|
Best rate
[MB/s] |
Efficiency
[%] | ||
Copy | 7125 | 54.3 | 14.0 |
Scale | 7501 | 57.2 | 13.8 |
Add | 6762 | 51.6 | 14.6 |
Triad | 6354 | 48.5 | 14.9 |
Apart from the increase over Axel Lite in absolute terms, it is noteworthy that Mito8M exhibits a significant improvement in terms of efficiency too, as shown in the above tables. This is especially true in the case of ARM core frequency set to 1300 MHz.
Another interesting thing to note is how the bandwidth is affected by the ARM core frequency. If it scaled linearly, we should have an improvement of 62.5% from 800 to 1300 MHz. The average bandwidth at 800 MHz is 5761 MB/s. At 1300 MHz, it is 6935 MB/s. Therefore, the increase is 20.4%. With regard to STREAM benchmark, the achieved bandwidth does not scale linearly with ARM core frequency.
Please see this page for more details about STREAM benchmark.
LMbench[edit | edit source]
For what regards the memory bandwidth, LMbench provides many results organized in different categories. For the sake of simplicity, the following tables details just a couple of categories. The full results are available for download here (ARM core frequency set to 800 MHz) and here (ARM core frequency set to 1300 MHz).
Buffer size | Bandwitdth
[MB/s] | |
---|---|---|
ARM core frequency = 800 MHz | ARM core frequency = 1300 MHz | |
512B | 1553 | 2521 |
1kB | 1567 | 2546 |
2kB | 1575 | 2560 |
4kB | 1575 | 2564 |
8kB | 1577 | 2564 |
16kB | 1577 | 2567 |
32kB | 1528 | 2490 |
64kB | 1531 | 2494 |
128kB | 1547 | 2530 |
256kB | 1552 | 2526 |
512kB | 1514 | 2518 |
1MB | 1318 | 2181 |
2MB | 1430 | 2148 |
4MB | 1420 | 2108 |
8MB | 1423 | 2038 |
16MB | 1420 | 2116 |
32MB | 1365 | 2117 |
64MB | 1393 | 2035 |
128MB | 1382 | 2035 |
256MB | 1372 | 2050 |
512MB | 1367 | 1998 |
Buffer size | Bandwitdth
[MB/s] | |
---|---|---|
ARM core frequency = 800 MHz | ARM core frequency = 1300 MHz | |
512B | 2932 | 4771 |
1kB | 3048 | 4956 |
2kB | 3100 | 5046 |
4kB | 3136 | 5097 |
8kB | 3135 | 5101 |
16kB | 3150 | 5120 |
32kB | 2864 | 5127 |
64kB | 3033 | 5071 |
128kB | 3093 | 4886 |
256kB | 2956 | 5056 |
512kB | 3024 | 5054 |
1MB | 3075 | 5092 |
2MB | 3095 | 5116 |
4MB | 3121 | 5118 |
8MB | 3137 | 5120 |
16MB | 3145 | 5121 |
32MB | 3146 | 5120 |
64MB | 3146 | 5125 |
128MB | 3147 | 5123 |
256MB | 3150 | 5124 |
512MB | 3144 | 5125 |
1GB | 3146 | 5124 |
There are some interesting facts to stress:
- Read and write bandwitdth are not effected by the buffer size.
- They are significantly affected by the ARM core frequency. For instance, the improvement of the write bandwidth (about 62% when the buffer is 1GB) is practically the same of the increase in frequency.
For more information regarding LMbench, please see this page.
pmbw[edit | edit source]
As defined by the author, pmbw
is "a set of assembler routines to measure the parallel memory (cache and RAM) bandwidth of modern multi-core machines." It performs a myriad of tests. Luckily, it comes with a handful tool that plots the results—which are stored in a text file—in a series of charts. Again,the benchmark was run at two different ARM core frequencies, 800 and 1300 MHz.
The complete results and the charts are available at the following links:
- http://mirror.dave.eu/mito/Mito8M/pmbw-stats-Mito8M-800MHz.txt
- http://mirror.dave.eu/mito/Mito8M/pmbw-plots-Mito8M-800MHz.pdf
- http://mirror.dave.eu/mito/Mito8M/pmbw-stats-Mito8M-1300MHz.txt
- http://mirror.dave.eu/mito/Mito8M/pmbw-plots-Mito8M-1300MHz.pdf
Generally speaking, the charts exhibit significant declines in the performances when the array size is around the L1 and the L2 cache size.
For more details about pmbw
, please refer to this page.
stressapptest[edit | edit source]
According to the documentation, stressapptest—which was developed at Google—is "a memory interface test. It tries to maximize randomized traffic to memory from processor and I/O, with the intent of creating a realistic high load situation in order to test the existing hardware devices in a computer."
Test | Bandwidth
[MB/s] | |
---|---|---|
ARM core frequency = 800 MHz | ARM core frequency = 1300 MHz | |
Memory copy | 5483 | 5804 |
The above table lists the achieved results when the benchmark was run as detailed in this section. In this case, the different when running at different ARM core frequencies is very little.
For more information about stressapptest, please refer to this page.
Useful links[edit | edit source]
- Joshua Wyatt Smith and Andrew Hamilton, Parallel benchmarks for ARM processors in the highenergy context
- T Wrigley, G Harmsen and B Mellado, Memory performance of ARM processors and itsrelevance to High Energy Physics
- G. T. Wrigley, R. G. Reed, B. Mellado, Memory benchmarking characterisation of ARM-based SoCs
Appendix A: Detailed testing procedures[edit | edit source]
This section details how the benchmarks were configured and run on the testbed.
STREAM[edit | edit source]
Building[edit | edit source]
To build STREAM:
- clone its git repository
- modify the
Makefile
as shown below - issue the
make
command.
git clone https://github.com/jeffhammond/STREAM.git make
1 armbian@Mito8M:~/devel/STREAM$ cat Makefile
2 CC = gcc
3 CFLAGS = -O2 -fopenmp
4
5 FC = gfortran-4.9
6 FFLAGS = -O2 -fopenmp
7
8 all: stream_c.exe
9
10 stream_f.exe: stream.f mysecond.o
11 $(CC) $(CFLAGS) -c mysecond.c
12 $(FC) $(FFLAGS) -c stream.f
13 $(FC) $(FFLAGS) stream.o mysecond.o -o stream_f.exe
14
15 stream_c.exe: stream.c
16 $(CC) $(CFLAGS) stream.c -o stream_c.exe
17
18 clean:
19 rm -f stream_f.exe stream_c.exe *.o
20
21 # an example of a more complex build line for the Intel icc compiler
22 stream.icc: stream.c
23 icc -O3 -xCORE-AVX2 -ffreestanding -qopenmp -DSTREAM_ARRAY_SIZE=80000000 -DNTIMES=20 stream.c -o stream.omp.AVX2.80M.20x.icc
Running the tests[edit | edit source]
ARM core clock = 800 MHz[edit | edit source]
armbian@Mito8M:~/devel/STREAM$ ./stream_c.exe ------------------------------------------------------------- STREAM version $Revision: 5.10 $ ------------------------------------------------------------- This system uses 8 bytes per array element. ------------------------------------------------------------- Array size = 10000000 (elements), Offset = 0 (elements) Memory per array = 76.3 MiB (= 0.1 GiB). Total memory required = 228.9 MiB (= 0.2 GiB). Each kernel will be executed 10 times. The *best* time for each kernel (excluding the first iteration) will be used to compute the reported bandwidth. ------------------------------------------------------------- Number of Threads requested = 4 Number of Threads counted = 4 ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 46427 microseconds. (= 46427 clock ticks) Increase the size of the arrays if this shows that you are not getting at least 20 clock ticks per test. ------------------------------------------------------------- WARNING -- The above is only a rough guideline. For best results, please be sure you know the precision of your system timer. ------------------------------------------------------------- Function Best Rate MB/s Avg time Min time Max time Copy: 6770.5 0.024010 0.023632 0.025117 Scale: 6093.2 0.027474 0.026259 0.029142 Add: 5263.5 0.046008 0.045597 0.046230 Triad: 4820.0 0.050297 0.049793 0.050723 ------------------------------------------------------------- Solution Validates: avg error less than 1.000000e-13 on all three arrays -------------------------------------------------------------
ARM core clock = 1300 MHz[edit | edit source]
armbian@Mito8M:~/devel/STREAM$ ./stream_c.exe ------------------------------------------------------------- STREAM version $Revision: 5.10 $ ------------------------------------------------------------- This system uses 8 bytes per array element. ------------------------------------------------------------- Array size = 10000000 (elements), Offset = 0 (elements) Memory per array = 76.3 MiB (= 0.1 GiB). Total memory required = 228.9 MiB (= 0.2 GiB). Each kernel will be executed 10 times. The *best* time for each kernel (excluding the first iteration) will be used to compute the reported bandwidth. ------------------------------------------------------------- Number of Threads requested = 4 Number of Threads counted = 4 ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 43743 microseconds. (= 43743 clock ticks) Increase the size of the arrays if this shows that you are not getting at least 20 clock ticks per test. ------------------------------------------------------------- WARNING -- The above is only a rough guideline. For best results, please be sure you know the precision of your system timer. ------------------------------------------------------------- Function Best Rate MB/s Avg time Min time Max time Copy: 7124.7 0.022597 0.022457 0.022866 Scale: 7501.5 0.022730 0.021329 0.024132 Add: 6761.7 0.035827 0.035494 0.036168 Triad: 6354.1 0.038171 0.037771 0.038644 ------------------------------------------------------------- Solution Validates: avg error less than 1.000000e-13 on all three arrays -------------------------------------------------------------
LMbench[edit | edit source]
To run this benchmark, the native prebuilt package provided by Debian Buster was used.
Please click on Expand to show the complete log.
armbian@Mito8M:~/devel/lmbench$ sudo lmbench-run [sudo] password for armbian: /usr/lib/lmbench/scripts/gnu-os: unable to guess system type This script, last modified 2004-08-18, has failed to recognize the operating system you are using. It is advised that you download the most up to date version of the config scripts from ftp://ftp.gnu.org/pub/gnu/config/ If the version you run (/usr/lib/lmbench/scripts/gnu-os) is already up to date, please send the following data and any information you think might be pertinent to <config-patches@gnu.org> in order to provide the needed information to handle your system. config.guess timestamp = 2004-08-18 uname -m = aarch64 uname -r = 4.14.98-g4c94e1dbaec2 uname -s = Linux uname -v = #1 SMP PREEMPT Mon Sep 30 14:46:22 CEST 2019 /usr/bin/uname -p = /bin/uname -X = hostinfo = /bin/universe = /usr/bin/arch -k = /bin/arch = /usr/bin/oslevel = /usr/convex/getsysinfo = UNAME_MACHINE = aarch64 UNAME_RELEASE = 4.14.98-g4c94e1dbaec2 UNAME_SYSTEM = Linux UNAME_VERSION = #1 SMP PREEMPT Mon Sep 30 14:46:22 CEST 2019 ===================================================================== L M B E N C H C ON F I G U R A T I O N ---------------------------------------- You need to configure some parameters to lmbench. Once you have configured these parameters, you may do multiple runs by saying "make rerun" in the src subdirectory. NOTICE: please do not have any other activity on the system if you can help it. Things like the second hand on your xclock or X perfmeters are not so good when benchmarking. In fact, X is not so good when benchmarking. ===================================================================== If you are running on an MP machine and you want to try running multiple copies of lmbench in parallel, you can specify how many here. Using this option will make the benchmark run 100x slower (sorry). NOTE: WARNING! This feature is experimental and many results are known to be incorrect or random! MULTIPLE COPIES [default 1]: ===================================================================== Options to control job placement 1) Allow scheduler to place jobs 2) Assign each benchmark process with any attendent child processes to its own processor 3) Assign each benchmark process with any attendent child processes to its own processor, except that it will be as far as possible from other processes 4) Assign each benchmark and attendent processes to their own processors 5) Assign each benchmark and attendent processes to their own processors, except that they will be as far as possible from each other and other processes 6) Custom placement: you assign each benchmark process with attendent child processes to processors 7) Custom placement: you assign each benchmark and attendent processes to processors Note: some benchmarks, such as bw_pipe, create attendent child processes for each benchmark process. For example, bw_pipe needs a second process to send data down the pipe to be read by the benchmark process. If you have three copies of the benchmark process running, then you actually have six processes; three attendent child processes sending data down the pipes and three benchmark processes reading data and doing the measurements. Job placement selection [default 1]: ===================================================================== Hang on, we are calculating your timing granularity. OK, it looks like you can time stuff down to 5000 usec resolution. Hang on, we are calculating your timing overhead. OK, it looks like your gettimeofday() costs 0 usecs. Hang on, we are calculating your loop overhead. OK, it looks like your benchmark loop costs 0.00000136 usecs. ===================================================================== Several benchmarks operate on a range of memory. This memory should be sized such that it is at least 4 times as big as the external cache[s] on your system. It should be no more than 80% of your physical memory. The bigger the range, the more accurate the results, but larger sizes take somewhat longer to run the benchmark. MB [default 2097]: 1024 Checking to see if you have 1024 MB; please wait for a moment... 1024MB OK 1024MB OK 1024MB OK Hang on, we are calculating your cache line size. OK, it looks like your cache line is 64 bytes. ===================================================================== lmbench measures a wide variety of system performance, and the full suite of benchmarks can take a long time on some platforms. Consequently, we offer the capability to run only predefined subsets of benchmarks, one for operating system specific benchmarks and one for hardware specific benchmarks. We also offer the option of running only selected benchmarks which is useful during operating system development. Please remember that if you intend to publish the results you either need to do a full run or one of the predefined OS or hardware subsets. SUBSET (ALL|HARWARE|OS|DEVELOPMENT) [default all]: ===================================================================== This benchmark measures, by default, memory latency for a number of different strides. That can take a long time and is most useful if you are trying to figure out your cache line size or if your cache line size is greater than 128 bytes. If you are planning on sending in these results, please don't do a fast run. Answering yes means that we measure memory latency with a 128 byte stride. FASTMEM [default no]: ===================================================================== This benchmark measures, by default, file system latency. That can take a long time on systems with old style file systems (i.e., UFS, FFS, etc.). Linux' ext2fs and Sun's tmpfs are fast enough that this test is not painful. If you are planning on sending in these results, please don't do a fast run. If you want to skip the file system latency tests, answer "yes" below. SLOWFS [default no]: yes ===================================================================== This benchmark can measure disk zone bandwidths and seek times. These can be turned into whizzy graphs that pretty much tell you everything you might need to know about the performance of your disk. This takes a while and requires read access to a disk drive. Write is not measured, see disk.c to see how if you want to do so. If you want to skip the disk tests, hit return below. If you want to include disk tests, then specify the path to the disk device, such as /dev/sda. For each disk that is readable, you'll be prompted for a one line description of the drive, i.e., Iomega IDE ZIP or HP C3725S 2GB on 10MB/sec NCR SCSI bus DISKS [default none]: ===================================================================== If you are running on an idle network and there are other, identically configured systems, on the same wire (no gateway between you and them), and you have rsh access to them, then you should run the network part of the benchmarks to them. Please specify any such systems as a space separated list such as: ether-host fddi-host hippi-host. REMOTE [default none]: ===================================================================== Calculating mhz, please wait for a moment... I think your CPU mhz is 798 MHz, 1.2531 nanosec clock but I am frequently wrong. If that is the wrong Mhz, type in your best guess as to your processor speed. It doesn't have to be exact, but if you know it is around 800, say 800. Please note that some processors, such as the P4, have a core which is double-clocked, so on those processors the reported clock speed will be roughly double the advertised clock rate. For example, a 1.8GHz P4 may be reported as a 3592MHz processor. Processor mhz [default 798 MHz, 1.2531 nanosec clock]: ===================================================================== We need a place to store a 1024 Mbyte file as well as create and delete a large number of small files. We default to /var/tmp. If /var/tmp is a memory resident file system (i.e., tmpfs), pick a different place. Please specify a directory that has enough space and is a local file system. FSDIR [default /var/tmp/lmbench]: /tmp/lmbench ===================================================================== lmbench outputs status information as it runs various benchmarks. By default this output is sent to /dev/tty, but you may redirect it to any file you wish (such as /dev/null...). Status output file [default /dev/tty]: ===================================================================== There is a database of benchmark results that is shipped with new releases of lmbench. Your results can be included in the database if you wish. The more results the better, especially if they include remote networking. If your results are interesting, i.e., for a new fast box, they may be made available on the lmbench web page, which is http://www.bitmover.com/lmbench Mail results [default yes]: no OK, no results mailed. ===================================================================== Confguration done, thanks. There is a mailing list for discussing lmbench hosted at BitMover. Send mail to majordomo@bitmover.com to join the list. /usr/lib/lmbench/scripts/gnu-os: unable to guess system type This script, last modified 2004-08-18, has failed to recognize the operating system you are using. It is advised that you download the most up to date version of the config scripts from ftp://ftp.gnu.org/pub/gnu/config/ If the version you run (/usr/lib/lmbench/scripts/gnu-os) is already up to date, please send the following data and any information you think might be pertinent to <config-patches@gnu.org> in order to provide the needed information to handle your system. config.guess timestamp = 2004-08-18 uname -m = aarch64 uname -r = 4.14.98-g4c94e1dbaec2 uname -s = Linux uname -v = #1 SMP PREEMPT Mon Sep 30 14:46:22 CEST 2019 /usr/bin/uname -p = /bin/uname -X = hostinfo = /bin/universe = /usr/bin/arch -k = /bin/arch = /usr/bin/oslevel = /usr/convex/getsysinfo = UNAME_MACHINE = aarch64 UNAME_RELEASE = 4.14.98-g4c94e1dbaec2 UNAME_SYSTEM = Linux UNAME_VERSION = #1 SMP PREEMPT Mon Sep 30 14:46:22 CEST 2019 Using config in CONFIG.Mito8M Wed Jan 15 10:56:54 CET 2020 Latency measurements Wed Jan 15 10:57:29 CET 2020 Local networking Wed Jan 15 10:58:36 CET 2020 Bandwidth measurements Wed Jan 15 11:03:02 CET 2020 Calculating context switch overhead Wed Jan 15 11:03:09 CET 2020 Calculating effective TLB size Wed Jan 15 11:03:10 CET 2020 Calculating memory load parallelism Wed Jan 15 11:14:34 CET 2020 McCalpin's STREAM benchmark Wed Jan 15 11:15:30 CET 2020 Calculating memory load latency Wed Jan 15 11:35:54 CET 2020 Benchmark run finished.... Remember you can find the results of the benchmark under /var/lib/lmbench/results
pmbw[edit | edit source]
Building[edit | edit source]
Building pmbw is straightforward. Please click on Expand to show the box that illustrates the procedure.
armbian@Mito8M:~/devel$ git clone https://github.com/bingmann/pmbw.git Cloning into 'pmbw'... remote: Enumerating objects: 15, done. remote: Counting objects: 100% (15/15), done. remote: Compressing objects: 100% (15/15), done. remote: Total 386 (delta 1), reused 3 (delta 0), pack-reused 371 Receiving objects: 100% (386/386), 369.04 KiB | 1.27 MiB/s, done. Resolving deltas: 100% (232/232), done. armbian@Mito8M:~/devel$ cd pmbw armbian@Mito8M:~/devel/pmbw$ ./configure && make checking build system type... aarch64-unknown-linux-gnu checking host system type... aarch64-unknown-linux-gnu checking target system type... aarch64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether to enable maintainer-specific portions of Makefiles... no checking building for Windows... no checking for g++... g++ checking whether the C++ compiler works... yes checking for C++ compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking whether make supports the include directive... yes (GNU style) checking dependency style of g++... gcc3 checking whether g++ supports -march=x86-64... no checking for pthread_mutex_init in -lpthread... yes checking for clock_gettime in -lrt... yes checking for posix_memalign in -lc... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: executing depfiles commands g++ -DPACKAGE_NAME=\"pmbw\" -DPACKAGE_TARNAME=\"pmbw\" -DPACKAGE_VERSION=\"0.6.3\" -DPACKAGE_STRING=\"pmbw\ 0.6.3\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"pmbw\" -DVERSION=\"0.6.3\" -DON_WINDOWS=false -DHAVE_POSIX_MEMALIGN=1 -I. -W -Wall -g -O2 -MT pmbw.o -MD -MP -MF .deps/pmbw.Tpo -c -o pmbw.o pmbw.cc mv -f .deps/pmbw.Tpo .deps/pmbw.Po g++ -W -Wall -g -O2 -o pmbw pmbw.o -lpthread -lrt g++ -DPACKAGE_NAME=\"pmbw\" -DPACKAGE_TARNAME=\"pmbw\" -DPACKAGE_VERSION=\"0.6.3\" -DPACKAGE_STRING=\"pmbw\ 0.6.3\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"pmbw\" -DVERSION=\"0.6.3\" -DON_WINDOWS=false -DHAVE_POSIX_MEMALIGN=1 -I. -W -Wall -g -O2 -MT stats2gnuplot.o -MD -MP -MF .deps/stats2gnuplot.Tpo -c -o stats2gnuplot.o stats2gnuplot.cc mv -f .deps/stats2gnuplot.Tpo .deps/stats2gnuplot.Po g++ -W -Wall -g -O2 -o stats2gnuplot stats2gnuplot.o -lpthread -lrt
Running the tests[edit | edit source]
The benchmark was run as follows:
armbian@Mito8M:~/devel/pmbw$ sudo nice -n -2 ./pmbw -S 0 [sudo] password for armbian: Running benchmarks with no upper array size limit. Detected 2997 MiB physical RAM and 4 CPUs. Allocating 2048 MiB for testing. Running nthreads=1 factor=1073741824 areasize=1024 thrsize=1024 testsize=1024 repeats=1048576 testvol=1073741824 testaccess=268435456 run time = 0.694051 -> rerunning test with repeat factor=2320598341 Running nthreads=1 factor=2320598341 areasize=1024 thrsize=1024 testsize=1024 repeats=2266210 testvol=2320599040 testaccess=580149760 run time = 1.49925 -> next test with repeat factor=2321757595 RESULT datetime=2020-01-29 11:52:20 host=Mito8M version=0.6.3 funcname=cScanWrite32PtrSimpleLoop nthreads=1 areasize=1024 threadsize=1024 testsize=1024 repeats=2266210 testvol=2320599040 testaccess=580149760 time=1.4992515009998896858 bandwidth=1547838396.9949886799 rate=2.5842491100916590667e-09 Running nthreads=1 factor=2321757595 areasize=2048 thrsize=2048 testsize=2048 repeats=1133671 testvol=2321758208 testaccess=580439552 run time = 1.47811 -> next test with repeat factor=2356140806 RESULT datetime=2020-01-29 11:52:21 host=Mito8M version=0.6.3 funcname=cScanWrite32PtrSimpleLoop nthreads=1 areasize=2048 threadsize=2048 testsize=2048 repeats=1133671 testvol=2321758208 testaccess=580439552 time=1.4781108589995710645 bandwidth=1570760537.9284164906 rate=2.5465371095172560774e-09 Running nthreads=1 factor=2356140806 areasize=3072 thrsize=3072 testsize=3072 repeats=766973 testvol=2356141056 testaccess=589035264 ...
To generate the charts plotting the results, the following command was issued:
./stats2gnuplot stats.txt | gnuplot
stressapptest[edit | edit source]
Building[edit | edit source]
Bulding stressapptest is straighforward. The following box illustrates the procedure. Please click on Expand to visualize the box.
armbian@Mito8M:~/devel/stressapptest$ git clone https://github.com/stressapptest/stressapptest.git Cloning into 'stressapptest'... remote: Enumerating objects: 290, done. remote: Total 290 (delta 0), reused 0 (delta 0), pack-reused 290 Receiving objects: 100% (290/290), 324.79 KiB | 1.16 MiB/s, done. Resolving deltas: 100% (196/196), done. armbian@Mito8M:~/devel/stressapptest$ cd stressapptest armbian@Mito8M:~/devel/stressapptest/stressapptest$ ./configure configure: Compiling with dynamically linked libraries. checking build system type... aarch64-unknown-linux-gnu checking host system type... aarch64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking for g++... g++ checking whether the C++ compiler works... yes checking for C++ compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking for style of include used by make... GNU checking dependency style of g++... gcc3 checking for gcc... gcc checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking user ID... armbian checking host name... Mito8M checking current timestamp... Mon Jan 27 16:25:29 CET 2020 checking for dirent.h that defines DIR... yes checking for library containing opendir... none required checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking arpa/inet.h usability... yes checking arpa/inet.h presence... yes checking for arpa/inet.h... yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking netdb.h usability... yes checking netdb.h presence... yes checking for netdb.h... yes checking for stdint.h... (cached) yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking sys/ioctl.h usability... yes checking sys/ioctl.h presence... yes checking for sys/ioctl.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking for unistd.h... (cached) yes checking pthread.h usability... yes checking pthread.h presence... yes checking for pthread.h... yes checking for library containing pthread_create... -lpthread checking for pthread_barrier_t... yes checking libaio.h usability... no checking libaio.h presence... no checking for libaio.h... no checking for library containing io_setup... no checking sys/shm.h usability... yes checking sys/shm.h presence... yes checking for sys/shm.h... yes checking for library containing shm_open... -lrt checking for stdbool.h that conforms to C99... yes checking for _Bool... yes checking for an ANSI C-conforming const... yes checking for inline... inline checking for pid_t... yes checking for C/C++ restrict keyword... __restrict checking for size_t... yes checking for ssize_t... yes checking whether time.h and sys/time.h may both be included... yes checking for uint16_t... yes checking for working volatile... yes checking whether closedir returns void... no checking whether gcc needs -traditional... no checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking for sys/socket.h... (cached) yes checking types of arguments for select... int,fd_set *,struct timeval * checking return type of signal handlers... void checking whether strerror_r is declared... yes checking for strerror_r... yes checking whether strerror_r returns char *... no checking for vprintf... yes checking for _doprnt... no checking for ftruncate... yes checking for gettimeofday... yes checking for memset... yes checking for munmap... yes checking for select... yes checking for socket... yes checking for strtol... yes checking for strtoull... yes checking for mmap64... yes checking for posix_memalign... yes checking for rand_r... yes checking for sched_getaffinity... yes configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating src/stressapptest_config.h config.status: executing depfiles commands armbian@Mito8M:~/devel/stressapptest/stressapptest$ make CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/armbian/devel/stressapptest/stressapptest/missing --run aclocal-1.11 /home/armbian/devel/stressapptest/stressapptest/missing: line 54: aclocal-1.11: command not found WARNING: `aclocal-1.11' is missing on your system. You should only need it if you modified `acinclude.m4' or `configure.ac'. You might want to install the `Automake' and `Perl' packages. Grab them from any GNU archive site. cd . && /bin/bash /home/armbian/devel/stressapptest/stressapptest/missing --run automake-1.11 --foreign /home/armbian/devel/stressapptest/stressapptest/missing: line 54: automake-1.11: command not found WARNING: `automake-1.11' is missing on your system. You should only need it if you modified `Makefile.am', `acinclude.m4' or `configure.ac'. You might want to install the `Automake' and `Perl' packages. Grab them from any GNU archive site. CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/armbian/devel/stressapptest/stressapptest/missing --run autoconf aclocal.m4:16: warning: this file was generated for autoconf 2.65. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'. /bin/bash ./config.status --recheck running CONFIG_SHELL=/bin/bash /bin/bash ./configure --no-create --no-recursion configure: Compiling with dynamically linked libraries. checking build system type... aarch64-unknown-linux-gnu checking host system type... aarch64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking for g++... g++ checking whether the C++ compiler works... yes checking for C++ compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking for style of include used by make... GNU checking dependency style of g++... gcc3 checking for gcc... gcc checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking user ID... armbian checking host name... Mito8M checking current timestamp... Mon Jan 27 16:27:41 CET 2020 checking for dirent.h that defines DIR... yes checking for library containing opendir... none required checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking arpa/inet.h usability... yes checking arpa/inet.h presence... yes checking for arpa/inet.h... yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking netdb.h usability... yes checking netdb.h presence... yes checking for netdb.h... yes checking for stdint.h... (cached) yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking sys/ioctl.h usability... yes checking sys/ioctl.h presence... yes checking for sys/ioctl.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking for unistd.h... (cached) yes checking pthread.h usability... yes checking pthread.h presence... yes checking for pthread.h... yes checking for library containing pthread_create... -lpthread checking for pthread_barrier_t... yes checking libaio.h usability... no checking libaio.h presence... no checking for libaio.h... no checking for library containing io_setup... no checking sys/shm.h usability... yes checking sys/shm.h presence... yes checking for sys/shm.h... yes checking for library containing shm_open... -lrt checking for stdbool.h that conforms to C99... yes checking for _Bool... yes checking for an ANSI C-conforming const... yes checking for inline... inline checking for pid_t... yes checking for C/C++ restrict keyword... __restrict checking for size_t... yes checking for ssize_t... yes checking whether time.h and sys/time.h may both be included... yes checking for uint16_t... yes checking for working volatile... yes checking whether closedir returns void... no checking whether gcc needs -traditional... no checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking for sys/socket.h... (cached) yes checking types of arguments for select... int,fd_set *,struct timeval * checking return type of signal handlers... void checking whether strerror_r is declared... yes checking for strerror_r... yes checking whether strerror_r returns char *... no checking for vprintf... yes checking for _doprnt... no checking for ftruncate... yes checking for gettimeofday... yes checking for memset... yes checking for munmap... yes checking for select... yes checking for socket... yes checking for strtol... yes checking for strtoull... yes checking for mmap64... yes checking for posix_memalign... yes checking for rand_r... yes checking for sched_getaffinity... yes configure: creating ./config.status /bin/bash ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating src/stressapptest_config.h config.status: executing depfiles commands Making all in src make[1]: Entering directory '/home/armbian/devel/stressapptest/stressapptest/src' (CDPATH="${ZSH_VERSION+.}:" && cd .. && /bin/bash /home/armbian/devel/stressapptest/stressapptest/missing --run autoheader) perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = "en_US.UTF-8", LC_ALL = (unset), LC_ADDRESS = "it_IT.UTF-8", LC_NAME = "it_IT.UTF-8", LC_MONETARY = "it_IT.UTF-8", LC_PAPER = "it_IT.UTF-8", LC_IDENTIFICATION = "it_IT.UTF-8", LC_TELEPHONE = "it_IT.UTF-8", LC_MESSAGES = "en_US.UTF-8", LC_MEASUREMENT = "it_IT.UTF-8", LC_TIME = "it_IT.UTF-8", LC_NUMERIC = "it_IT.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to a fallback locale ("en_US.UTF-8"). perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = "en_US.UTF-8", LC_ALL = (unset), LC_TIME = "it_IT.UTF-8", LC_MONETARY = "it_IT.UTF-8", LC_ADDRESS = "it_IT.UTF-8", LC_TELEPHONE = "it_IT.UTF-8", LC_MESSAGES = "en_US.UTF-8", LC_NAME = "it_IT.UTF-8", LC_MEASUREMENT = "it_IT.UTF-8", LC_IDENTIFICATION = "it_IT.UTF-8", LC_NUMERIC = "it_IT.UTF-8", LC_PAPER = "it_IT.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to a fallback locale ("en_US.UTF-8"). rm -f stamp-h1 touch stressapptest_config.h.in cd .. && /bin/bash ./config.status src/stressapptest_config.h config.status: creating src/stressapptest_config.h config.status: src/stressapptest_config.h is unchanged make all-am make[2]: Entering directory '/home/armbian/devel/stressapptest/stressapptest/src' g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cc mv -f .deps/main.Tpo .deps/main.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT os.o -MD -MP -MF .deps/os.Tpo -c -o os.o os.cc os.cc:215:2: warning: #warning "Unsupported CPU type: unable to determine feature set." [-Wcpp] #warning "Unsupported CPU type: unable to determine feature set." ^15:30, 27 January 2020 (UTC)~ mv -f .deps/os.Tpo .deps/os.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT os_factory.o -MD -MP -MF .deps/os_factory.Tpo -c -o os_factory.o os_factory.cc mv -f .deps/os_factory.Tpo .deps/os_factory.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT pattern.o -MD -MP -MF .deps/pattern.Tpo -c -o pattern.o pattern.cc mv -f .deps/pattern.Tpo .deps/pattern.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT queue.o -MD -MP -MF .deps/queue.Tpo -c -o queue.o queue.cc mv -f .deps/queue.Tpo .deps/queue.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT sat.o -MD -MP -MF .deps/sat.Tpo -c -o sat.o sat.cc mv -f .deps/sat.Tpo .deps/sat.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT sat_factory.o -MD -MP -MF .deps/sat_factory.Tpo -c -o sat_factory.o sat_factory.cc mv -f .deps/sat_factory.Tpo .deps/sat_factory.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT worker.o -MD -MP -MF .deps/worker.Tpo -c -o worker.o worker.cc worker.cc: In member function ‘virtual void NetworkThread::SetIP(const char*)’: worker.cc:2005:10: warning: ‘char* strncpy(char*, const char*, size_t)’ specified bound 256 equals destination size [-Wstringop-truncation] strncpy(ipaddr_, ipaddr_init, 256); 15:30, 27 January 2020 (UTC)~~^15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)~ In function ‘bool {anonymous}::sat_strerror(int, char*, int)’, inlined from ‘virtual bool NetworkThread::ReceivePage(int, page_entry*)’ at worker.cc:2154:23: worker.cc:92:14: warning: ‘char* strncpy(char*, const char*, size_t)’ specified bound 256 equals destination size [-Wstringop-truncation] strncpy(buf, errmsg, len); 15:30, 27 January 2020 (UTC)~~^15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)~~ In function ‘bool {anonymous}::sat_strerror(int, char*, int)’, inlined from ‘virtual bool NetworkListenThread::Listen()’ at worker.cc:2065:17: worker.cc:92:14: warning: ‘char* strncpy(char*, const char*, size_t)’ specified bound 256 equals destination size [-Wstringop-truncation] strncpy(buf, errmsg, len); 15:30, 27 January 2020 (UTC)~~^15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)~~ In function ‘bool {anonymous}::sat_strerror(int, char*, int)’, inlined from ‘virtual bool NetworkThread::SendPage(int, page_entry*)’ at worker.cc:2121:21, inlined from ‘virtual bool NetworkThread::SendPage(int, page_entry*)’ at worker.cc:2110:6: worker.cc:92:14: warning: ‘char* strncpy(char*, const char*, size_t)’ specified bound 256 equals destination size [-Wstringop-truncation] strncpy(buf, errmsg, len); 15:30, 27 January 2020 (UTC)~~^15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)~~ In function ‘bool {anonymous}::sat_strerror(int, char*, int)’, inlined from ‘virtual bool NetworkThread::ReceivePage(int, page_entry*)’ at worker.cc:2154:23, inlined from ‘virtual bool NetworkSlaveThread::Work()’ at worker.cc:2402:21: worker.cc:92:14: warning: ‘char* strncpy(char*, const char*, size_t)’ specified bound 256 equals destination size [-Wstringop-truncation] strncpy(buf, errmsg, len); 15:30, 27 January 2020 (UTC)~~^15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)~~ In function ‘bool {anonymous}::sat_strerror(int, char*, int)’, inlined from ‘virtual bool NetworkThread::SendPage(int, page_entry*)’ at worker.cc:2121:21, inlined from ‘virtual bool NetworkThread::SendPage(int, page_entry*)’ at worker.cc:2110:6, inlined from ‘virtual bool NetworkSlaveThread::Work()’ at worker.cc:2406:18: worker.cc:92:14: warning: ‘char* strncpy(char*, const char*, size_t)’ specified bound 256 equals destination size [-Wstringop-truncation] strncpy(buf, errmsg, len); 15:30, 27 January 2020 (UTC)~~^15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)~~ In function ‘bool {anonymous}::sat_strerror(int, char*, int)’, inlined from ‘virtual bool NetworkThread::SendPage(int, page_entry*)’ at worker.cc:2121:21, inlined from ‘virtual bool NetworkThread::SendPage(int, page_entry*)’ at worker.cc:2110:6, inlined from ‘virtual bool NetworkThread::Work()’ at worker.cc:2228:38: worker.cc:92:14: warning: ‘char* strncpy(char*, const char*, size_t)’ specified bound 256 equals destination size [-Wstringop-truncation] strncpy(buf, errmsg, len); 15:30, 27 January 2020 (UTC)~~^15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)~~ In function ‘bool {anonymous}::sat_strerror(int, char*, int)’, inlined from ‘int WorkerThread::SpawnThread()’ at worker.cc:339:17: worker.cc:92:14: warning: ‘char* strncpy(char*, const char*, size_t)’ specified bound 256 equals destination size [-Wstringop-truncation] strncpy(buf, errmsg, len); 15:30, 27 January 2020 (UTC)~~^15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)15:30, 27 January 2020 (UTC)~~ mv -f .deps/worker.Tpo .deps/worker.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT finelock_queue.o -MD -MP -MF .deps/finelock_queue.Tpo -c -o finelock_queue.o finelock_queue.cc mv -f .deps/finelock_queue.Tpo .deps/finelock_queue.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT error_diag.o -MD -MP -MF .deps/error_diag.Tpo -c -o error_diag.o error_diag.cc mv -f .deps/error_diag.Tpo .deps/error_diag.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT disk_blocks.o -MD -MP -MF .deps/disk_blocks.Tpo -c -o disk_blocks.o disk_blocks.cc mv -f .deps/disk_blocks.Tpo .deps/disk_blocks.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT adler32memcpy.o -MD -MP -MF .deps/adler32memcpy.Tpo -c -o adler32memcpy.o adler32memcpy.cc adler32memcpy.cc:519:4: warning: #warning "No vector copy defined for this architecture." [-Wcpp] #warning "No vector copy defined for this architecture." ^15:30, 27 January 2020 (UTC)~ mv -f .deps/adler32memcpy.Tpo .deps/adler32memcpy.Po g++ -DHAVE_CONFIG_H -I. -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -MT logger.o -MD -MP -MF .deps/logger.Tpo -c -o logger.o logger.cc mv -f .deps/logger.Tpo .deps/logger.Po g++ -DCHECKOPTS -Wreturn-type -Wunused -Wuninitialized -Wall -O3 -funroll-all-loops -funroll-loops -DNDEBUG -o stressapptest main.o os.o os_factory.o pattern.o queue.o sat.o sat_factory.o worker.o finelock_queue.o error_diag.o disk_blocks.o adler32memcpy.o logger.o -lrt -lpthread gcc -DHAVE_CONFIG_H -I. -g -O2 -MT findmask.o -MD -MP -MF .deps/findmask.Tpo -c -o findmask.o findmask.c mv -f .deps/findmask.Tpo .deps/findmask.Po gcc -g -O2 -o findmask findmask.o -lrt -lpthread make[2]: Leaving directory '/home/armbian/devel/stressapptest/stressapptest/src' make[1]: Leaving directory '/home/armbian/devel/stressapptest/stressapptest/src' make[1]: Entering directory '/home/armbian/devel/stressapptest/stressapptest' make[1]: Nothing to be done for 'all-am'. make[1]: Leaving directory '/home/armbian/devel/stressapptest/stressapptest'
Running the tests[edit | edit source]
Please click on Expand to visualize the boxes.
ARM core clock = 800 MHz[edit | edit source]
armbian@Mito8M:~/devel/stressapptest/stressapptest/src$ ./stressapptest -M 32 -s 5 -v 20 2020/01/27-16:23:44(CET) Log: Commandline - ./stressapptest -M 32 -s 5 -v 20 2020/01/27-16:23:44(CET) Stats: SAT revision 1.0.9_autoconf, 64 bit binary 2020/01/27-16:23:44(CET) Log: armbian @ Mito8M on Mon Jan 27 16:08:57 CET 2020 from open source release 2020/01/27-16:23:44(CET) Log: 1 nodes, 4 cpus. 2020/01/27-16:23:44(CET) Log: Defaulting to 4 copy threads 2020/01/27-16:23:44(CET) Log: Prefer plain malloc memory allocation. 2020/01/27-16:23:44(CET) Log: Using mmap() allocation at 0xffff8a31a000. 2020/01/27-16:23:44(CET) Stats: Starting SAT, 32M, 5 seconds 2020/01/27-16:23:44(CET) Log: initialized 120 data patterns 2020/01/27-16:23:44(CET) Log: Allocating pages, Total: 32 Free: 12 2020/01/27-16:23:44(CET) Starting Fill threads: 8 threads, 32 pages 2020/01/27-16:23:44(CET) Starting Fill Threads 0: 4 pages 2020/01/27-16:23:44(CET) Starting Fill Threads 1: 4 pages 2020/01/27-16:23:44(CET) Starting Fill Threads 2: 4 pages 2020/01/27-16:23:44(CET) Starting Fill Threads 3: 4 pages 2020/01/27-16:23:44(CET) Starting Fill Threads 4: 4 pages 2020/01/27-16:23:44(CET) Starting Fill Threads 5: 4 pages 2020/01/27-16:23:44(CET) Starting Fill Threads 6: 4 pages 2020/01/27-16:23:44(CET) Starting Fill Threads 7: 4 pages 2020/01/27-16:23:44(CET) Log: Thread 0 running on core ID 0 mask F (F). 2020/01/27-16:23:44(CET) Log: Starting fill thread 0 2020/01/27-16:23:44(CET) Log: Thread 1 running on core ID 1 mask F (F). 2020/01/27-16:23:44(CET) Log: Starting fill thread 1 2020/01/27-16:23:44(CET) Log: Thread 2 running on core ID 0 mask F (F). 2020/01/27-16:23:44(CET) Log: Starting fill thread 2 2020/01/27-16:23:44(CET) Log: Thread 3 running on core ID 1 mask F (F). 2020/01/27-16:23:44(CET) Log: Starting fill thread 3 2020/01/27-16:23:44(CET) Log: Thread 4 running on core ID 2 mask F (F). 2020/01/27-16:23:44(CET) Log: Starting fill thread 4 2020/01/27-16:23:44(CET) Log: Completed 0: Fill thread. Status 1, 4 pages filled 2020/01/27-16:23:44(CET) Log: Completed 3: Fill thread. Status 1, 4 pages filled 2020/01/27-16:23:44(CET) Log: Completed 2: Fill thread. Status 1, 4 pages filled 2020/01/27-16:23:44(CET) Log: Completed 1: Fill thread. Status 1, 4 pages filled 2020/01/27-16:23:44(CET) Log: Thread 5 running on core ID 1 mask F (F). 2020/01/27-16:23:44(CET) Log: Starting fill thread 5 2020/01/27-16:23:44(CET) Log: Thread 7 running on core ID 3 mask F (F). 2020/01/27-16:23:44(CET) Log: Starting fill thread 7 2020/01/27-16:23:44(CET) Log: Thread 6 running on core ID 0 mask F (F). 2020/01/27-16:23:44(CET) Log: Starting fill thread 6 2020/01/27-16:23:44(CET) Log: Completed 4: Fill thread. Status 1, 4 pages filled 2020/01/27-16:23:44(CET) Log: Completed 5: Fill thread. Status 1, 4 pages filled 2020/01/27-16:23:44(CET) Log: Completed 7: Fill thread. Status 1, 4 pages filled 2020/01/27-16:23:44(CET) Log: Completed 6: Fill thread. Status 1, 4 pages filled 2020/01/27-16:23:44(CET) Log: Done filling pages. 2020/01/27-16:23:44(CET) Log: Allocating pages. 2020/01/27-16:23:44(CET) Log: Done allocating pages. 2020/01/27-16:23:44(CET) Log: Region 0: 32. 2020/01/27-16:23:44(CET) Log: Region mask: 0x1 2020/01/27-16:23:44(CET) Log: Installing signal handlers 2020/01/27-16:23:44(CET) Log: Launching worker threads 2020/01/27-16:23:44(CET) Log: Starting worker threads 2020/01/27-16:23:44(CET) Log: Starting invert threads 2020/01/27-16:23:44(CET) Log: Starting disk stress threads 2020/01/27-16:23:44(CET) Log: Starting cpu stress threads 2020/01/27-16:23:44(CET) Log: Initializing WorkerStatus objects 2020/01/27-16:23:44(CET) Log: Spawning worker threads 2020/01/27-16:23:44(CET) Log: Spawning thread 1 2020/01/27-16:23:44(CET) Log: Spawning thread 2 2020/01/27-16:23:44(CET) Log: Spawning thread 3 2020/01/27-16:23:44(CET) Log: available CPU mask - F 2020/01/27-16:23:44(CET) Log: Spawning thread 4 2020/01/27-16:23:44(CET) Log: Spawning thread 0 2020/01/27-16:23:44(CET) Log: available CPU mask - F 2020/01/27-16:23:44(CET) Log: Starting countdown with 5 seconds 2020/01/27-16:23:44(CET) Log: Thread 4 running on core ID 3 mask 8 (8). 2020/01/27-16:23:44(CET) Log: Starting copy thread 4: cpu 8, mem ffffffff 2020/01/27-16:23:44(CET) Log: available CPU mask - F 2020/01/27-16:23:44(CET) Log: Thread 0 running on core ID 2 mask F (F). 2020/01/27-16:23:44(CET) Log: Starting system error poll thread 0 2020/01/27-16:23:44(CET) Log: Thread 3 running on core ID 1 mask 2 (2). 2020/01/27-16:23:44(CET) Log: Thread 1 running on core ID 0 mask 1 (1). 2020/01/27-16:23:44(CET) Log: Starting copy thread 1: cpu 1, mem ffffffff 2020/01/27-16:23:44(CET) Log: Starting copy thread 3: cpu 2, mem ffffffff 2020/01/27-16:23:44(CET) Log: available CPU mask - F 2020/01/27-16:23:44(CET) Log: Thread 2 running on core ID 2 mask 4 (4). 2020/01/27-16:23:44(CET) Log: Starting copy thread 2: cpu 4, mem ffffffff 2020/01/27-16:23:49(CET) Log: Joining worker threads 2020/01/27-16:23:49(CET) Log: Joining thread 1 2020/01/27-16:23:49(CET) Log: Finished system error poll thread 0: 0 errors 2020/01/27-16:23:49(CET) Log: Completed 1: Copy thread. Status 1, 3410 pages copied 2020/01/27-16:23:49(CET) Log: Joining thread 2 2020/01/27-16:23:49(CET) Log: Completed 4: Copy thread. Status 1, 3446 pages copied 2020/01/27-16:23:49(CET) Log: Completed 2: Copy thread. Status 1, 3415 pages copied 2020/01/27-16:23:49(CET) Log: Joining thread 3 2020/01/27-16:23:49(CET) Log: Completed 3: Copy thread. Status 1, 3440 pages copied 2020/01/27-16:23:49(CET) Log: Joining thread 4 2020/01/27-16:23:49(CET) Log: Joining thread 0 2020/01/27-16:23:49(CET) Log: Reads per page histogram 2020/01/27-16:23:49(CET) Log: 256 - 512: 24 2020/01/27-16:23:49(CET) Log: 512 - 1024: 8 2020/01/27-16:23:49(CET) Log: Finished countdown, begin to result check 2020/01/27-16:23:49(CET) Log: Finished countdown, begin to result check 2020/01/27-16:23:49(CET) Log: Finished countdown, begin to result check 2020/01/27-16:23:49(CET) Log: Finished countdown, begin to result check 2020/01/27-16:23:49(CET) Log: Finished countdown, begin to result check 2020/01/27-16:23:49(CET) Log: Finished countdown, begin to result check 2020/01/27-16:23:49(CET) Log: Finished countdown, begin to result check 2020/01/27-16:23:49(CET) Log: Finished countdown, begin to result check 2020/01/27-16:23:49(CET) Log: Finished countdown, begin to result check 2020/01/27-16:23:49(CET) Log: Spawning thread 5 2020/01/27-16:23:49(CET) Log: Spawning thread 6 2020/01/27-16:23:49(CET) Log: Thread 5 running on core ID 1 mask F (F). 2020/01/27-16:23:49(CET) Log: Starting Check thread 5 2020/01/27-16:23:49(CET) Log: Thread 6 running on core ID 3 mask F (F). 2020/01/27-16:23:49(CET) Log: Starting Check thread 6 2020/01/27-16:23:49(CET) Log: Spawning thread 7 2020/01/27-16:23:49(CET) Log: Spawning thread 8 2020/01/27-16:23:49(CET) Log: Spawning thread 9 2020/01/27-16:23:49(CET) Log: Spawning thread 10 2020/01/27-16:23:49(CET) Log: Spawning thread 11 2020/01/27-16:23:49(CET) Log: Spawning thread 12 2020/01/27-16:23:49(CET) Log: Joining thread 5 2020/01/27-16:23:49(CET) Log: Thread 12 running on core ID 0 mask F (F). 2020/01/27-16:23:49(CET) Log: Starting Check thread 12 2020/01/27-16:23:49(CET) Log: Thread 8 running on core ID 2 mask F (F). 2020/01/27-16:23:49(CET) Log: Thread 9 running on core ID 2 mask F (F). 2020/01/27-16:23:49(CET) Log: Starting Check thread 9 2020/01/27-16:23:49(CET) Log: Starting Check thread 8 2020/01/27-16:23:49(CET) Log: Completed 12: Check thread. Status 1, 4 pages checked 2020/01/27-16:23:49(CET) Log: Completed 5: Check thread. Status 1, 7 pages checked 2020/01/27-16:23:49(CET) Log: Completed 6: Check thread. Status 1, 7 pages checked 2020/01/27-16:23:49(CET) Log: Joining thread 6 2020/01/27-16:23:49(CET) Log: Joining thread 7 2020/01/27-16:23:49(CET) Log: Thread 10 running on core ID 1 mask F (F). 2020/01/27-16:23:49(CET) Log: Thread 11 running on core ID 0 mask F (F). 2020/01/27-16:23:49(CET) Log: Starting Check thread 10 2020/01/27-16:23:49(CET) Log: Starting Check thread 11 2020/01/27-16:23:49(CET) Log: Completed 10: Check thread. Status 1, 0 pages checked 2020/01/27-16:23:49(CET) Log: Completed 11: Check thread. Status 1, 0 pages checked 2020/01/27-16:23:49(CET) Log: Thread 7 running on core ID 1 mask F (F). 2020/01/27-16:23:49(CET) Log: Starting Check thread 7 2020/01/27-16:23:49(CET) Log: Completed 7: Check thread. Status 1, 0 pages checked 2020/01/27-16:23:49(CET) Log: Completed 8: Check thread. Status 1, 2 pages checked 2020/01/27-16:23:49(CET) Log: Joining thread 8 2020/01/27-16:23:49(CET) Log: Completed 9: Check thread. Status 1, 0 pages checked 2020/01/27-16:23:49(CET) Log: Joining thread 9 2020/01/27-16:23:49(CET) Log: Joining thread 10 2020/01/27-16:23:49(CET) Log: Joining thread 11 2020/01/27-16:23:49(CET) Log: Joining thread 12 2020/01/27-16:23:49(CET) Log: Join all outstanding threads 2020/01/27-16:23:49(CET) Log: Reaping thread status 1 2020/01/27-16:23:49(CET) Log: Thread 1 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 2 2020/01/27-16:23:49(CET) Log: Thread 2 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 3 2020/01/27-16:23:49(CET) Log: Thread 3 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 4 2020/01/27-16:23:49(CET) Log: Thread 4 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 0 2020/01/27-16:23:49(CET) Log: Thread 0 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 5 2020/01/27-16:23:49(CET) Log: Thread 5 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 6 2020/01/27-16:23:49(CET) Log: Thread 6 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 7 2020/01/27-16:23:49(CET) Log: Thread 7 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 8 2020/01/27-16:23:49(CET) Log: Thread 8 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 9 2020/01/27-16:23:49(CET) Log: Thread 9 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 10 2020/01/27-16:23:49(CET) Log: Thread 10 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 11 2020/01/27-16:23:49(CET) Log: Thread 11 found 0 hardware incidents 2020/01/27-16:23:49(CET) Log: Reaping thread status 12 2020/01/27-16:23:49(CET) Log: Thread 12 found 0 hardware incidents 2020/01/27-16:23:49(CET) Stats: Found 0 hardware incidents 2020/01/27-16:23:49(CET) Stats: Completed: 27422.00M in 5.00s 5482.17MB/s, with 0 hardware incidents, 0 errors 2020/01/27-16:23:49(CET) Stats: Memory Copy: 27422.00M at 5483.92MB/s 2020/01/27-16:23:49(CET) Stats: File Copy: 0.00M at 0.00MB/s 2020/01/27-16:23:49(CET) Stats: Net Copy: 0.00M at 0.00MB/s 2020/01/27-16:23:49(CET) Stats: Data Check: 0.00M at 0.00MB/s 2020/01/27-16:23:49(CET) Stats: Invert Data: 0.00M at 0.00MB/s 2020/01/27-16:23:49(CET) Stats: Disk: 0.00M at 0.00MB/s 2020/01/27-16:23:49(CET) Log: Deleting worker threads 2020/01/27-16:23:49(CET) Log: Deleting thread 1 2020/01/27-16:23:49(CET) Log: Deleting thread 2 2020/01/27-16:23:49(CET) Log: Deleting thread 3 2020/01/27-16:23:49(CET) Log: Deleting thread 4 2020/01/27-16:23:49(CET) Log: Deleting thread 0 2020/01/27-16:23:49(CET) Log: Destroying WorkerStatus objects 2020/01/27-16:23:49(CET) Log: Uninstalling signal handlers 2020/01/27-16:23:49(CET) 2020/01/27-16:23:49(CET) Status: PASS - please verify no corrected errors 2020/01/27-16:23:49(CET)
ARM core clock = 1300 MHz[edit | edit source]
armbian@Mito8M:~/devel/stressapptest/stressapptest/src$ ./stressapptest -M 32 -s 5 -v 20 2020/01/27-16:22:14(CET) Log: Commandline - ./stressapptest -M 32 -s 5 -v 20 2020/01/27-16:22:14(CET) Stats: SAT revision 1.0.9_autoconf, 64 bit binary 2020/01/27-16:22:14(CET) Log: armbian @ Mito8M on Mon Jan 27 16:08:57 CET 2020 from open source release 2020/01/27-16:22:14(CET) Log: 1 nodes, 4 cpus. 2020/01/27-16:22:14(CET) Log: Defaulting to 4 copy threads 2020/01/27-16:22:14(CET) Log: Prefer plain malloc memory allocation. 2020/01/27-16:22:14(CET) Log: Using mmap() allocation at 0xffff9e7ea000. 2020/01/27-16:22:14(CET) Stats: Starting SAT, 32M, 5 seconds 2020/01/27-16:22:14(CET) Log: initialized 120 data patterns 2020/01/27-16:22:14(CET) Log: Allocating pages, Total: 32 Free: 12 2020/01/27-16:22:14(CET) Starting Fill threads: 8 threads, 32 pages 2020/01/27-16:22:14(CET) Starting Fill Threads 0: 4 pages 2020/01/27-16:22:14(CET) Starting Fill Threads 1: 4 pages 2020/01/27-16:22:14(CET) Starting Fill Threads 2: 4 pages 2020/01/27-16:22:14(CET) Starting Fill Threads 3: 4 pages 2020/01/27-16:22:14(CET) Starting Fill Threads 4: 4 pages 2020/01/27-16:22:14(CET) Starting Fill Threads 5: 4 pages 2020/01/27-16:22:14(CET) Starting Fill Threads 6: 4 pages 2020/01/27-16:22:14(CET) Starting Fill Threads 7: 4 pages 2020/01/27-16:22:14(CET) Log: Thread 0 running on core ID 1 mask F (F). 2020/01/27-16:22:14(CET) Log: Starting fill thread 0 2020/01/27-16:22:14(CET) Log: Thread 2 running on core ID 2 mask F (F). 2020/01/27-16:22:14(CET) Log: Thread 1 running on core ID 0 mask F (F). 2020/01/27-16:22:14(CET) Log: Starting fill thread 1 2020/01/27-16:22:14(CET) Log: Thread 4 running on core ID 3 mask F (F). 2020/01/27-16:22:14(CET) Log: Starting fill thread 4 2020/01/27-16:22:14(CET) Log: Starting fill thread 2 2020/01/27-16:22:14(CET) Log: Thread 3 running on core ID 2 mask F (F). 2020/01/27-16:22:14(CET) Log: Starting fill thread 3 2020/01/27-16:22:14(CET) Log: Completed 1: Fill thread. Status 1, 4 pages filled 2020/01/27-16:22:14(CET) Log: Completed 3: Fill thread. Status 1, 4 pages filled 2020/01/27-16:22:14(CET) Log: Completed 4: Fill thread. Status 1, 4 pages filled 2020/01/27-16:22:14(CET) Log: Thread 7 running on core ID 3 mask F (F). 2020/01/27-16:22:14(CET) Log: Starting fill thread 7 2020/01/27-16:22:14(CET) Log: Thread 5 running on core ID 2 mask F (F). 2020/01/27-16:22:14(CET) Log: Thread 6 running on core ID 2 mask F (F). 2020/01/27-16:22:14(CET) Log: Starting fill thread 6 2020/01/27-16:22:14(CET) Log: Starting fill thread 5 2020/01/27-16:22:14(CET) Log: Completed 0: Fill thread. Status 1, 4 pages filled 2020/01/27-16:22:14(CET) Log: Completed 6: Fill thread. Status 1, 4 pages filled 2020/01/27-16:22:14(CET) Log: Completed 7: Fill thread. Status 1, 4 pages filled 2020/01/27-16:22:14(CET) Log: Completed 5: Fill thread. Status 1, 4 pages filled 2020/01/27-16:22:14(CET) Log: Completed 2: Fill thread. Status 1, 4 pages filled 2020/01/27-16:22:14(CET) Log: Done filling pages. 2020/01/27-16:22:14(CET) Log: Allocating pages. 2020/01/27-16:22:14(CET) Log: Done allocating pages. 2020/01/27-16:22:14(CET) Log: Region 0: 32. 2020/01/27-16:22:14(CET) Log: Region mask: 0x1 2020/01/27-16:22:14(CET) Log: Installing signal handlers 2020/01/27-16:22:14(CET) Log: Launching worker threads 2020/01/27-16:22:14(CET) Log: Starting worker threads 2020/01/27-16:22:14(CET) Log: Starting invert threads 2020/01/27-16:22:14(CET) Log: Starting disk stress threads 2020/01/27-16:22:14(CET) Log: Starting cpu stress threads 2020/01/27-16:22:14(CET) Log: Initializing WorkerStatus objects 2020/01/27-16:22:14(CET) Log: Spawning worker threads 2020/01/27-16:22:14(CET) Log: Spawning thread 1 2020/01/27-16:22:14(CET) Log: Spawning thread 2 2020/01/27-16:22:14(CET) Log: Spawning thread 3 2020/01/27-16:22:14(CET) Log: available CPU mask - F 2020/01/27-16:22:14(CET) Log: Spawning thread 4 2020/01/27-16:22:14(CET) Log: Spawning thread 0 2020/01/27-16:22:14(CET) Log: available CPU mask - F 2020/01/27-16:22:14(CET) Log: Thread 4 running on core ID 3 mask 8 (8). 2020/01/27-16:22:14(CET) Log: Starting countdown with 5 seconds 2020/01/27-16:22:14(CET) Log: Starting copy thread 4: cpu 8, mem ffffffff 2020/01/27-16:22:14(CET) Log: Thread 1 running on core ID 0 mask 1 (1). 2020/01/27-16:22:14(CET) Log: available CPU mask - F 2020/01/27-16:22:14(CET) Log: Starting copy thread 1: cpu 1, mem ffffffff 2020/01/27-16:22:14(CET) Log: available CPU mask - F 2020/01/27-16:22:14(CET) Log: Thread 3 running on core ID 1 mask 2 (2). 2020/01/27-16:22:14(CET) Log: Starting copy thread 3: cpu 2, mem ffffffff 2020/01/27-16:22:14(CET) Log: Thread 2 running on core ID 2 mask 4 (4). 2020/01/27-16:22:14(CET) Log: Starting copy thread 2: cpu 4, mem ffffffff 2020/01/27-16:22:14(CET) Log: Thread 0 running on core ID 3 mask F (F). 2020/01/27-16:22:14(CET) Log: Starting system error poll thread 0 2020/01/27-16:22:19(CET) Log: Joining worker threads 2020/01/27-16:22:19(CET) Log: Joining thread 1 2020/01/27-16:22:19(CET) Log: Completed 3: Copy thread. Status 1, 3639 pages copied 2020/01/27-16:22:19(CET) Log: Completed 4: Copy thread. Status 1, 3645 pages copied 2020/01/27-16:22:19(CET) Log: Completed 1: Copy thread. Status 1, 3633 pages copied 2020/01/27-16:22:19(CET) Log: Joining thread 2 2020/01/27-16:22:19(CET) Log: Completed 2: Copy thread. Status 1, 3595 pages copied 2020/01/27-16:22:19(CET) Log: Joining thread 3 2020/01/27-16:22:19(CET) Log: Joining thread 4 2020/01/27-16:22:19(CET) Log: Joining thread 0 2020/01/27-16:22:19(CET) Log: Finished system error poll thread 0: 0 errors 2020/01/27-16:22:19(CET) Log: Reads per page histogram 2020/01/27-16:22:19(CET) Log: 128 - 256: 1 2020/01/27-16:22:19(CET) Log: 256 - 512: 19 2020/01/27-16:22:19(CET) Log: 512 - 1024: 12 2020/01/27-16:22:19(CET) Log: Finished countdown, begin to result check 2020/01/27-16:22:19(CET) Log: Finished countdown, begin to result check 2020/01/27-16:22:19(CET) Log: Finished countdown, begin to result check 2020/01/27-16:22:19(CET) Log: Finished countdown, begin to result check 2020/01/27-16:22:19(CET) Log: Finished countdown, begin to result check 2020/01/27-16:22:19(CET) Log: Finished countdown, begin to result check 2020/01/27-16:22:19(CET) Log: Finished countdown, begin to result check 2020/01/27-16:22:19(CET) Log: Finished countdown, begin to result check 2020/01/27-16:22:19(CET) Log: Finished countdown, begin to result check 2020/01/27-16:22:19(CET) Log: Spawning thread 5 2020/01/27-16:22:19(CET) Log: Spawning thread 6 2020/01/27-16:22:19(CET) Log: Spawning thread 7 2020/01/27-16:22:19(CET) Log: Thread 5 running on core ID 0 mask F (F). 2020/01/27-16:22:19(CET) Log: Starting Check thread 5 2020/01/27-16:22:19(CET) Log: Spawning thread 8 2020/01/27-16:22:19(CET) Log: Spawning thread 9 2020/01/27-16:22:19(CET) Log: Spawning thread 10 2020/01/27-16:22:19(CET) Log: Spawning thread 11 2020/01/27-16:22:19(CET) Log: Spawning thread 12 2020/01/27-16:22:19(CET) Log: Joining thread 5 2020/01/27-16:22:19(CET) Log: Thread 12 running on core ID 2 mask F (F). 2020/01/27-16:22:19(CET) Log: Starting Check thread 12 2020/01/27-16:22:19(CET) Log: Thread 6 running on core ID 1 mask F (F). 2020/01/27-16:22:19(CET) Log: Thread 8 running on core ID 3 mask F (F). 2020/01/27-16:22:19(CET) Log: Starting Check thread 8 2020/01/27-16:22:19(CET) Log: Starting Check thread 6 2020/01/27-16:22:19(CET) Log: Thread 9 running on core ID 3 mask F (F). 2020/01/27-16:22:19(CET) Log: Completed 8: Check thread. Status 1, 5 pages checked 2020/01/27-16:22:19(CET) Log: Starting Check thread 9 2020/01/27-16:22:19(CET) Log: Completed 9: Check thread. Status 1, 0 pages checked 2020/01/27-16:22:19(CET) Log: Completed 12: Check thread. Status 1, 5 pages checked 2020/01/27-16:22:19(CET) Log: Completed 5: Check thread. Status 1, 5 pages checked 2020/01/27-16:22:19(CET) Log: Joining thread 6 2020/01/27-16:22:19(CET) Log: Thread 11 running on core ID 2 mask F (F). 2020/01/27-16:22:19(CET) Log: Starting Check thread 11 2020/01/27-16:22:19(CET) Log: Completed 11: Check thread. Status 1, 0 pages checked 2020/01/27-16:22:19(CET) Log: Thread 10 running on core ID 0 mask F (F). 2020/01/27-16:22:20(CET) Log: Starting Check thread 10 2020/01/27-16:22:20(CET) Log: Completed 10: Check thread. Status 1, 0 pages checked 2020/01/27-16:22:19(CET) Log: Thread 7 running on core ID 2 mask F (F). 2020/01/27-16:22:19(CET) Log: Completed 6: Check thread. Status 1, 5 pages checked 2020/01/27-16:22:20(CET) Log: Starting Check thread 7 2020/01/27-16:22:20(CET) Log: Completed 7: Check thread. Status 1, 0 pages checked 2020/01/27-16:22:20(CET) Log: Joining thread 7 2020/01/27-16:22:20(CET) Log: Joining thread 8 2020/01/27-16:22:20(CET) Log: Joining thread 9 2020/01/27-16:22:20(CET) Log: Joining thread 10 2020/01/27-16:22:20(CET) Log: Joining thread 11 2020/01/27-16:22:20(CET) Log: Joining thread 12 2020/01/27-16:22:20(CET) Log: Join all outstanding threads 2020/01/27-16:22:20(CET) Log: Reaping thread status 1 2020/01/27-16:22:20(CET) Log: Thread 1 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 2 2020/01/27-16:22:20(CET) Log: Thread 2 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 3 2020/01/27-16:22:20(CET) Log: Thread 3 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 4 2020/01/27-16:22:20(CET) Log: Thread 4 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 0 2020/01/27-16:22:20(CET) Log: Thread 0 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 5 2020/01/27-16:22:20(CET) Log: Thread 5 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 6 2020/01/27-16:22:20(CET) Log: Thread 6 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 7 2020/01/27-16:22:20(CET) Log: Thread 7 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 8 2020/01/27-16:22:20(CET) Log: Thread 8 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 9 2020/01/27-16:22:20(CET) Log: Thread 9 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 10 2020/01/27-16:22:20(CET) Log: Thread 10 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 11 2020/01/27-16:22:20(CET) Log: Thread 11 found 0 hardware incidents 2020/01/27-16:22:20(CET) Log: Reaping thread status 12 2020/01/27-16:22:20(CET) Log: Thread 12 found 0 hardware incidents 2020/01/27-16:22:20(CET) Stats: Found 0 hardware incidents 2020/01/27-16:22:20(CET) Stats: Completed: 29024.00M in 5.00s 5803.50MB/s, with 0 hardware incidents, 0 errors 2020/01/27-16:22:20(CET) Stats: Memory Copy: 29024.00M at 5804.33MB/s 2020/01/27-16:22:20(CET) Stats: File Copy: 0.00M at 0.00MB/s 2020/01/27-16:22:20(CET) Stats: Net Copy: 0.00M at 0.00MB/s 2020/01/27-16:22:20(CET) Stats: Data Check: 0.00M at 0.00MB/s 2020/01/27-16:22:20(CET) Stats: Invert Data: 0.00M at 0.00MB/s 2020/01/27-16:22:20(CET) Stats: Disk: 0.00M at 0.00MB/s 2020/01/27-16:22:20(CET) Log: Deleting worker threads 2020/01/27-16:22:20(CET) Log: Deleting thread 1 2020/01/27-16:22:20(CET) Log: Deleting thread 2 2020/01/27-16:22:20(CET) Log: Deleting thread 3 2020/01/27-16:22:20(CET) Log: Deleting thread 4 2020/01/27-16:22:20(CET) Log: Deleting thread 0 2020/01/27-16:22:20(CET) Log: Destroying WorkerStatus objects 2020/01/27-16:22:20(CET) Log: Uninstalling signal handlers 2020/01/27-16:22:20(CET) 2020/01/27-16:22:20(CET) Status: PASS - please verify no corrected errors 2020/01/27-16:22:20(CET)