General
Roy Longbottom’s PC Benchmark Collection
comprises numerous FREE benchmarks and reliability testing programs, for processors, caches, memory, buses, disks, flash drives, graphics, local area networks and Internet. Original ones run under DOS and later ones under all varieties of Windows.
Most have also been converted to run under Linux on PCs, and many for ARM CPUs via Android and Raspbian.
For the latter, details, benchmark execution files and source code download links, and results are provided in
Raspberry Pi Benchmarks.htm
with downloads for the stress test program codes in
Raspberry_Pi_Stress_Tests.zip.
See later details in Raspberry Pi 2 Stress Tests.htm.
NOTE - The original OpenGL benchmark was found to be producing FPS speeds twice as high as they should be. Existing relative performance comparisons of results on Raspberry Pi systems are still valid. The benchmark has been modified. So do not compare old scores with new ones.
The ARM tests use the same programming code as my
Linux Burn-In Apps.
Each of these particular programs obtain the same configuration details as my Raspberry Pi benchmarks [1], and results are saved in a text log file, besides being displayed. An example of the details obtained are shown below.
For identifying overclocking settings, a later addition shows the appropriate MHz and voltage settings [2]. These are logged at both the start and end of the test program results. See source codes in
the zip file.
1. SYSTEM INFORMATION
From File /proc/cpuinfo
Processor : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 464.48
Features : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7
Hardware : BCM2708
Revision : 000d
Serial : 00000000db690cb4
From File /proc/version
Linux version 3.6.11+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731
(prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) )
#371 PREEMPT Thu Feb 7 16:31:35 GMT 2013
2. MHz and Voltage Settings
arm_freq=700
core_freq=250
sdram_freq=400
over_voltage=0
1a. After Update
BogoMIPS : 697.95
#557 PREEMPT Wed Oct 2 18:49:09 BST 2013
|
To Start
Reliability Testing
For reliability testing purposes, these programs have run time parameters that determine running time and, sometimes, which particular hardware to use. Most also include performance measurements, reported at regular intervals, to identify speed reductions due to such as overheating or system interference. The test programs can be run via command lines in shell scripts, including allowing multiple programs to be run at the same time, each in its own Terminal window. The commands sometimes include an option for different log file names, for cleaner results when more than one copy of the same program is run. A temperature recording application can be included in the mix.
All test programs check numeric answers or data transfers for correct or consistent values and report in the log files if incorrect.
Following are examples of scripts used to run the test programs. Important Note - Script files produced using Windows NotePad do not work as spurious characters are included. It is recommended that the scripts are produced on the Raspberry Pi, using the nano command line editor, but Leafpad appears to be suitable.
The script files are usually named with a .sh suffix and permission to execute should be set in File Properties.
The first example [1] runs the temperature measuring program on a separate LXTerminal window for 70 minutes, reporting every minute. This allows an overrun of the other programs. Next, six floating test programs, with different parameters, are run sequentially, displaying on the same Terminal and saving results to the same log file. The tests are run for approximately 10 minutes each and configuration details are omitted, except for the last test.
The second example [2] runs four FPU tests, with the same run time parameters, at the same time. Each, and the temperature measuring program, runs in its own Terminal window, recording in different log files - in this case log1.txt to log4.txt for the FPU programs.
1. Series of Programs - run all in LXTerminal as ./fpu.sh
lxterminal -e ./RPiTemperature Passes 70, Seconds 60
./burninfpu KWords 1, Section 3, Minutes 10, log 29, NoConfig
./burninfpu KWords 10, Section 3, Minutes 10, log 29, NoConfig
./burninfpu KWords 1000, Section 3, Minutes 10, log 29, NoConfig
./burninfpu KWords 1, Section 1, Minutes 10, log 29, NoConfig
./burninfpu KWords 10, Section 1, Minutes 10, log 29, NoConfig
./burninfpu KWords 1000, Section 1, Minutes 10, log 29
2. Concurrent Programs - run all in LXTerminal as ./4fpu.sh
lxterminal -e ./RPiTemperature Pases 25, Seconds 30
lxterminal -e ./burninfpu KWords 1, Section 3, Minutes 10, log 1
lxterminal -e ./burninfpu KWords 1, Section 3, Minutes 10, log 2
lxterminal -e ./burninfpu KWords 1, Section 3, Minutes 10, log 3
lxterminal -e ./burninfpu KWords 1, Section 3, Minutes 10, log 4
Run time parameters are determined by the first character that
can be lower or upper case - K, S, M, L, N
|
To Start
Temperature Recorder - RPiTemperature
RPiTemperature, CPU temperature recording program, uses the following LX Terminal commands to display and log results.
/opt/vc/bin/vcgencmd measure_temp
/opt/vc/bin/vcgencmd measure_temp >> RPiTemperatures.txt
Run time parameters specify number of samples and interval - see below. Default is 10 samples with 1 second delay between samples.
Command - ./RPiTemperature passes 5, seconds 2
Temperature Measurement - Start at Tue Jun 18 11:57:19 2013
Using 5 samples at 2 second intervals
Seconds
0.0 temp=50.8°C
2.0 temp=50.8°C
4.1 temp=50.8°C
6.1 temp=51.4°C
8.2 temp=50.8°C
10.2 temp=50.8°C
Temperature Measurement - End at Tue Jun 18 11:57:29 2013
|
To Start
From Original Benchmarks
The Livermore Loops (livermoreloopsPiA6) [3] and OpenGL (OpenGL1Pi.bin) [2 ]benchmarks are described in
Raspberry Pi Benchmarks.htm,
and, along with the temperature recorder 4], were also used for reliability testing purposes. The benchmark execution files are included in this package and the source codes can be downloaded in
Raspberry_Pi_Benchmarks.zip.
These benchmarks were rerun using the following script file [1]. Temperatures were slightly higher than earlier, due to a hotter ambient conditions but, as could be expected, performance was virtually the same. Reported earlier, running the graphics tests stand alone, CPU utilisation was around 50%, FPS not much slower when run with Livermore Loops, where the latter ran at about half speed (see below).
The earlier results,
Here,
showed that the system crashed on overclocking whilst running these two test programs, probably when the temperature reached 73°C.
However, later tests, with maximum overclocking, demonstrated that the system could freeze at lower temperatures, on running the OpenGl test and one other program.
In this case, with no overclocking, maximum temperature was 70.8°C, or a rise of 16.7°C, after 9 minutes.
1. loopsogl.sh script file
lxterminal -e ./RPiTemperature Pases 36, Seconds 30
lxterminal -e ./liverloopsPiA6 Seconds 10
sleep 10
./OpenGL1Pi.bin Wide 1920, High 1080, RunMinutes 15
##############################################
2. Raspberry Pi OpenGL ES Benchmark 1.1, Wed Aug 7 17:38:11 2013
Reliability Mode 16 Tests of 57 Seconds
--------- Frames Per Second --------
Triangles All Textured
36000+ 5.31 5.31 4.95 5.34
36000+ 5.43 5.55 5.89 5.68
36000+ 5.36 5.39 5.43 5.20
36000+ 5.24 5.46 5.66 6.03
Screen Pixels 1920 Wide 1080 High
End Time Wed Aug 7 17:53:27 2013
##############################################
3. Livermore Loops Benchmark Opt 3 32 Bit via C/C++ Wed Aug 7 17:38:02 2013
Reliability test 10 seconds each loop x 24 x 3
Part 1 of 3 start at Wed Aug 7 17:38:03 2013
Part 2 of 3 start at Wed Aug 7 17:45:07 2013
Part 3 of 3 start at Wed Aug 7 17:48:55 2013
Numeric results were as expected
MFLOPS for 24 loops
64.3 73.5 99.9 84.2 10.0 14.5 55.7 72.4 45.3 21.3 18.1 14.2
10.4 7.7 30.2 34.8 55.9 24.4 41.7 19.0 13.5 12.5 31.6 16.9
Overall Ratings
Maximum Average Geomean Harmean Minimum
100.3 38.1 31.1 25.3 7.7
148.3 64.4 54.7 46.4 16.6 Stand alone results
########################################################
4. Room 25°C CPU 700 MHz
Temperature Measurement - Start at Wed Aug 7 17:38:01 2013
Using 36 samples at 30 second intervals
Seconds Seconds
0.0 temp=54.1°C 574.5 temp=70.2°C
30.0 temp=61.1°C 604.8 temp=70.2°C
60.2 temp=64.8°C 635.1 temp=70.2°C
90.5 temp=65.9°C 665.3 temp=70.8°C
120.8 temp=66.4°C 695.5 temp=70.8°C
151.1 temp=67.5°C 725.7 temp=70.2°C
181.3 temp=68.1°C 756.0 temp=70.8°C
211.6 temp=68.1°C 786.3 temp=70.8°C
241.8 temp=68.6°C 816.5 temp=70.2°C
272.1 temp=68.1°C 846.7 temp=70.8°C
302.2 temp=69.1°C 876.9 temp=70.2°C
332.5 temp=69.1°C 907.0 temp=70.2°C
362.8 temp=69.1°C 937.2 temp=63.8°C
393.0 temp=69.1°C 967.3 temp=59.5°C
423.3 temp=69.7°C 997.3 temp=57.8°C
453.5 temp=70.2°C 1027.4 temp=57.3°C
483.8 temp=69.7°C 1057.4 temp=56.2°C
514.0 temp=69.7°C 1087.5 temp=55.7°C
544.3 temp=70.8°C
Temperature Measurement - End at Wed Aug 7 17:56:09 2013
|
To Start
Floating Point Test - burninfpu
This uses the same program test code as
MP-MFLOPS,
but just for a single CPU. The arithmetic operations executed are of the form x[i] = (x[i] + a) * b - (x[i] + c) * d + (x[i] + e) * f with 2, 8 or 32 operations per input data word.
The same variables are used for each word and final results are checked for consistency, any errors being reported. Using 32 operations per word, performance is generally dependent on CPU speed, with fewer operations becoming more dependent on bus or RAM speed.
Run Time Parameters - Upper or Lower Case
S or Section 1, 2 or 3 2, 8 or 32 operations per word
K or KWords Integer number of 4 byte words to use
M or Minutes Running time (4 passes per minute)
L or Log Log file name extension 0 to 99
N or NoConfig Do not include configuration details in log
P or PauseAtEnd Include typed comment at end
Defaults
Section 3 (32 operations per word), Minutes 1, KWords 3.2 (as original MP_MFLOPS),
Log 0 (for log0.txt), Save configuration details, Don't stop for keyboard entry.
Reports are displayed/logged at a minimum of 15 second intervals.
|
Following shows the script file and results log file (log33.txt) running four varieties of burninfpu sequentially. The first one uses L1 cache sized data, default 32 operations per word.
The others all use L2 cache data with the three operations per word options, demonstrating the varying performance.
Script file fpu1.sh
#1
./burninfpu KWds 1, log 33, NoConfig
#2
./burninfpu KWds 10, Section 3, log 33, NoConfig
#3
./burninfpu KWds 10, Section 2, log 33, NoConfig
#4
./burninfpu KWds 10, Section 1, log 33
##############################################
Burn-In-FPU Linux/ARM v1.0 Tue Oct 1 14:46:08 2013
Using 4 KBytes, 32 Operations Per Word, For Approximately 1 Minutes
Pass 4 Byte Ops/ Repeat Seconds MFLOPS First All
Words Word Passes Results Same
#1
1 1000 32 96000 16.16 190 0.352358878 Yes
2 1000 32 96000 16.04 191 0.352358878 Yes
3 1000 32 96000 16.09 191 0.352358878 Yes
4 1000 32 96000 15.99 192 0.352358878 Yes
End at Tue Oct 1 14:47:13 2013
#2
1 10000 32 9600 17.26 178 0.669459462 Yes
2 10000 32 9600 17.12 179 0.669459462 Yes
3 10000 32 9600 17.13 179 0.669459462 Yes
4 10000 32 9600 17.17 179 0.669459462 Yes
End at Tue Oct 1 14:48:22 2013
#3
1 10000 8 22400 15.83 113 0.731058180 Yes
2 10000 8 22400 15.73 114 0.731058180 Yes
3 10000 8 22400 15.77 114 0.731058180 Yes
4 10000 8 22400 15.74 114 0.731058180 Yes
End at Tue Oct 1 14:49:25 2013
#4
1 10000 2 33600 15.51 43 0.512160420 Yes
2 10000 2 33600 15.44 44 0.512160420 Yes
3 10000 2 33600 15.45 44 0.512160420 Yes
4 10000 2 33600 15.42 44 0.512160420 Yes
End at Tue Oct 1 14:50:27 2013
|
To Start
Floating Point and Temperature Tests
Following script commands [1] to run burninfpu for 27 minutes and results [2], at the same time as measuring CPU temperatures. Tests were run using L1 cache, L2 cache and RAM at 2, 8 and 32 operations per word. Temperature increases were a mere 2.2 °C. This is similar to that obtained running just the Livermore Loops tests (see above). A further run of the last test (1000 KWd, 32 Ops) was run over 10 minutes with similar temperature increases.
The 10 minute test (1000 KWd, 32 Ops) was repeated with the Raspberry Pi overclocked at 1000 MHz (from 700). Starting temperature was 51.9 °C, increasing by 8.1 °C, with speed consistently around 240 MFLOPS.
1. Script file fpu2.sh
lxterminal -e ./RPiTemperature Pases 120, Seconds 15
./burninfpu KWds 1, Minutes 3, Section 1, log 30, NoConfig
./burninfpu KWds 1, Minutes 3, Section 2, log 30, NoConfig
./burninfpu KWds 1, Minutes 3, Section 3, log 30, NoConfig
./burninfpu KWds 10, Minutes 3, Section 1, log 30, NoConfig
./burninfpu KWds 10, Minutes 3, Section 2, log 30, NoConfig
./burninfpu KWds 10, Minutes 3, Section 3, log 30, NoConfig
./burninfpu KWds 1000, Minutes 3, Section 1, log 30, NoConfig
./burninfpu KWds 1000, Minutes 3, Section 2, log 30, NoConfig
./burninfpu KWds 1000, Minutes 3, Section 3, log 30
2. ##############################################
KWds 1 1 1 L1 cache
Ops/Wd 2 8 32
MFLOPS °C MFLOPS °C MFLOPS °C
51 50.8 128 53.0 188 53.0
53 51.9 130 51.9 189 52.5
53 52.5 130 51.9 189 51.9
53 51.9 130 51.9 190 52.5
53 51.9 130 51.9 188 51.9
53 51.9 130 51.9 189 51.9
53 51.9 130 52.5 189 51.9
47 52.5 129 53.0 189 52.5
43 53.0 128 51.9 190 53.0
52 52.5 129 53.0 189 51.9
45 53.0 129 53.0 190 51.9
53 51.9 129 52.5 189 51.9
KWds 10 10 10 L2 cache
Ops/Wd 2 8 32
MFLOPS °C MFLOPS °C MFLOPS °C
42 51.9 112 52.5 178 52.5
43 51.9 112 51.9 178 52.5
43 51.9 112 52.5 178 51.9
43 52.5 112 51.9 178 52.5
43 51.9 112 51.9 178 51.9
43 52.5 112 51.9 178 52.5
43 53.0 112 51.9 178 51.9
43 51.9 112 51.9 178 51.9
43 51.9 112 51.9 178 52.5
43 52.5 111 51.9 178 52.5
43 53.0 112 51.9 178 51.9
43 51.9 112 51.9 177 51.9
KWds 1000 1000 1000 RAM
Ops/Wd 2 8 32
MFLOPS °C MFLOPS °C MFLOPS °C
31 51.9 90 53.0 162 53.5
31 53.0 90 53.0 163 53.0
31 51.9 90 53.0 163 53.0
31 51.9 90 53.0 163 52.5
31 51.9 90 53.0 163 53.0
31 52.5 90 53.0 163 53.0
31 53.0 90 53.0 162 52.5
31 53.0 90 53.0 162 52.5
31 53.0 90 52.5 163 52.5
31 53.0 90 53.0 163 52.5
31 53.0 90 53.0 162 53.0
31 53.0 90 53.0 163 53.0
|
To Start
Cooking The Pi
Tests were carried out using a lamp with a 60 watt bulb shining directly on the RPi to see what happens at high temperatures. For the first test [1], maximum overclocking settings were used and just burninfpu was run. For this test, the lamp was moved closer to speed up temperature increases. CPU speed remained constant but the system crashed at around 80°C.
The next one [2] was run at medium overclocking settings, again with just burninfpu. This time the lamp was moved closer until 85°C was reached, then backed off after a short time. At 85°C, MFLOPS speed decreased to 700 MHz level but switched back to full speed when the temperature dropped.
For the third test [3], burninfpu and OpenGL1Pi were run at the same time with the lamp in a fixed position. After nearly 5 minutes, there was a reduction in CPU MFLOPS speed, probably at around 85°C . Running the OpenGL program by itself obtains an average of 6.0 FPS, with 36% CPU utilisation (see vmstat performance recorder output below [4]). The latter utilisation provides scope to run a processor test at the same time. In fact, to start with, burninfpu obtained an average speed of 98 MFLOPS, compared with 200, when run by itself. At the start, average speed for the OpenGL benchmark was just over 5 FPS.
On slowing down, average speed was 74 MFLOPS and this continued until the program finished. OpenGL1Pi performance did not change much and temperature hovered at around 85°C. As heavy processing has little impact on increasing temperature, which is dominated by graphics hardware activity, it seems strange that clock speed of the latter is not reduced (or is it at a higher temperature).
lxterminal -e ./RPiTemperature Passes 64, Seconds 15
lxterminal -e ./burninfpu KWds 1000, Section 3, Minutes 15, log 59
./OpenGL1Pi.bin Wide 1920, High 1080, RunMinutes 15
####################################################################
1. FPU 2. FPU 3. FPU + OpenGL
arm_freq=1000 arm_freq=900 arm_freq=900
core_freq=500 core_freq=250 core_freq=250
sdram_freq=600 sdram_freq=450 sdram_freq=450
over_voltage=6 over_voltage=2 over_voltage=2
MFLOPS °C MFLOPS °C Seconds MFLOPS FPS °C
216 55.1 202 66.4 0 67.0
238 60.5 201 69.1 15 71.8
238 63.8 201 72.4 30 104 75.6
238 64.8 201 74.5 45 77.7
238 67.0 201 76.7 61 96 5.2 78.8
212 68.6 201 77.7 76 104 79.9
238 69.1 204 79.4 91 81.0
238 70.8 200 81.0 106 94 5.5 82.0
237 71.3 201 83.1 122 81.5
239 72.9 193 84.2 137 105 82.0
239 75.1 160 84.7 152 83.1
239 76.7 160 85.8 167 5.4 83.1
239 75.1 160 86.4 183 94 83.1
239 74.5 160 85.8 198 83.7
239 75.6 188 83.7 213 100 83.7
239 75.6 200 81.5 228 5.3 84.7
239 76.7 201 79.9 244 89 83.7
239 76.7 201 78.8 259 84.2
239 77.2 200 77.7 274 85 83.1
239 77.2 203 76.1 289 5.2 84.7
239 77.7 200 75.1 305 83.1
239 78.8 200 74.5 320 81 83.1
239 78.8 200 74.5 335 5.3 84.7
239 78.8 200 72.9 351 83.7
239 79.4 200 72.4 366 76 83.7
Failed 201 70.8 381 84.7
204 70.2 397 74 5.3 83.1
201 69.1 412 83.1
200 69.1 427 76 84.2
200 68.1 443 83.7
201 68.1 458 68 5.2 83.7
201 67.0 473 83.7
202 66.4 488 83.1
202 65.9 504 69 84.2
201 65.9 519 4.9 83.7
201 65.4 534 73 83.7
200 64.8 550 84.2
200 64.3 565 75 84.2
201 63.8 580 4.7 84.7
204 63.8 595 69 84.2
203 63.8 611 84.2
201 62.7 626 79 5.0 84.7
201 62.1 641 84.2
201 61.6 657 68 84.2
201 62.1 672 84.7
201 61.6 687 5.2 84.2
201 61.1 702 72 84.2
203 61.1 718 84.7
203 61.6 733 70 84.7
202 61.1 748 5.3 84.7
201 60.0 764 81 84.2
201 60.5 779 85.3
201 60.0 794 69 5.0 85.3
201 58.9 809 85.3
204 57.8 825 76 84.7
201 57.3 840 84.7
201 57.3 855 4.6 85.8
201 57.3 871 69 85.3
201 56.8 886 85.3
901 78 85.3
916 5.0 85.3
932 198 81.0
947 78.8
962 197 78.3
977 77.7
4. OpenGL1Pi.bin by itself - vmstat command measuring system utilisation
vmstat 30 second intervals, 10 samples
us - CPU utilisation user
sy - CPU utilisation system
id - CPU idle
vmstat 30 10 > vmstats52.txt
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 336384 5980 39176 0 0 365 93 1360 201 4 4 90 2
1 0 0 335824 5996 39176 0 0 0 1 1642 1343 20 6 73 0
1 0 0 335824 6004 39176 0 0 0 1 1799 1807 27 9 64 0
1 0 0 335824 6012 39176 0 0 0 0 1858 1980 29 11 60 0
1 0 0 335328 6020 39176 0 0 0 1 1774 1732 28 9 64 0
0 0 0 335328 6036 39176 0 0 0 1 1826 1883 28 9 63 0
0 0 0 335328 6044 39176 0 0 0 0 1849 1950 29 10 61 0
1 0 0 335328 6052 39176 0 0 0 1 1766 1715 27 9 64 0
0 0 0 335080 6060 39192 0 0 0 0 1832 1900 30 9 61 0
0 0 0 335632 6080 39192 0 0 0 4 1234 89 4 2 93 0
|
To Start
Fixed Point Test - stressInt
This has six tests that alternately write and read data and six tests using write once and read many times, each test using two data patterns out of 24 variations. Some are shown in the results. The write phase comprises an unrolled loop with 32 store statements, with read after write checking the data via 32 AND and 32 OR statements. The read phase has multiple passes of 8 adds and 8 subtractions. The data is same at the start and end for checking purposes but all data words are checked at the end. See Assembly Code for translated instructions.
Following are command line options [1], a full example of output using L1 cache [2], plus L2 cache [3] and RAM summary results [4]. Million Instructions Per Second (MIPS) are based on That Assembly Code.
1. Run Time Parameters - Upper or Lower Case
K or KBytes Integer number of bytes to use
S or Seconds Running time for each of 12 tests
L or Log Log file name extension 0 to 99
N or NoConfig Do not include configuration details in log
P or PauseAtEnd Include typed comment at end
Defaults
./stressInt KBytes 8, Seconds 1, Log 0
Log logInt0.txt, Save configuration details, Don't stop for keyboard entry.
For longer times, reports are displayed at 10 second intervals.
2. ##############################################
arm_freq=700
core_freq=250
sdram_freq=400
over_voltage=0
Integer Stress Test Linux/ARM v1.0 Tue Oct 22 12:19:59 2013
8 KBytes Cache or RAM Space, 1 Seconds Per Test, 12 Tests
Write/Read
1 993 MB/sec Pattern 00000000 Result OK 60594 passes
2 1031 MB/sec Pattern FFFFFFFF Result OK 62922 passes
3 1025 MB/sec Pattern A5A5A5A5 Result OK 62535 passes
4 1037 MB/sec Pattern 55555555 Result OK 63312 passes
5 1039 MB/sec Pattern 33333333 Result OK 63422 passes
6 1019 MB/sec Pattern F0F0F0F0 Result OK 62213 passes
Maximum speed 568 MIPS
Read
1 1037 MB/sec Pattern 00000000 Result OK 126600 passes
2 1041 MB/sec Pattern FFFFFFFF Result OK 127100 passes
3 1019 MB/sec Pattern A5A5A5A5 Result OK 124400 passes
4 1031 MB/sec Pattern 55555555 Result OK 126000 passes
5 1032 MB/sec Pattern 33333333 Result OK 126000 passes
6 1016 MB/sec Pattern F0F0F0F0 Result OK 124100 passes
Maximum speed 620 MIPS
End at Tue Oct 22 12:20:11 2013
3. ##############################################
32 KBytes Cache or RAM Space, 1 Seconds Per Test, 12 Tests
Write/Read
1 414 MB/sec Pattern 00000000 Result OK 6323 passes
Maximum speed 229 MIPS
Read
1 358 MB/sec Pattern 00000000 Result OK 11000 passes
Maximum speed 213 MIPS
4. ##############################################
10000 KBytes Cache or RAM Space, 1 Seconds Per Test, 12 Tests
Write/Read
1 200 MB/sec Pattern 00000000 Result OK 10 passes
Maximum speed 111 MIPS
Read
1 161 MB/sec Pattern 00000000 Result OK 16 passes
Maximum speed 95 MIPS
|
To Start
Fixed Point and Temperature
Following are speeds and temperatures [1], running stressInt [2] and stressInt plus OpenGL1Pi [3], at various clock settings [4]. Surprisingly, the integer calculations gave rise to higher temperatures than the floating point tests. The screen froze again at maximum overclocking, when running the OpenGL program. On the other hand, maximum temperatures were of no real concern just running stressInt. For the record, room temperatures were between 22°C and 25°C.
2. lxterminal -e ./stressInt Seconds 80, log 2
1. lxterminal -e ./RPiTemperature Pases 100, Seconds 10
3. ./OpenGL1Pi.bin Wide 1920, High 1080, RunMinutes 15
##########################################################
4. arm_freq 700 900 1000 700 900 1000
core_freq 250 250 500 250 250 500
sdram_freq 400 450 600 400 450 600
over_voltage 0 2 6 0 2 6
3. OpenGL FPS 5.79 6.04 N/A
2. MIPS Write/Read 593 766 866 310 434 868
MIPS Read 642 827 936 483 653 933
1. Seconds °C °C °C °C °C
10 40.1 45.5 50.3 51.4 53.0 55.7
20 41.2 47.6 54.1 55.1 57.8 62.7
30 42.2 48.7 55.7 57.3 61.6 67.0 OGL Froze
40 42.2 48.7 56.2 58.9 63.8 62.7
50 42.8 49.8 57.3 60.0 64.8 62.1
60 43.3 49.8 57.3 61.6 65.9 62.7
70 43.3 50.3 58.4 61.6 65.9 62.7
80 43.3 50.3 58.4 62.7 67.0 62.7
90 43.9 50.3 58.4 62.7 68.1 62.7
100 44.4 50.8 58.4 64.3 67.5 63.8
110 44.4 50.8 58.9 63.8 68.1 62.7
120 44.4 50.8 58.4 64.3 68.6 63.8
Maximum 51.9 55.7 62.7 70.2 75.6 67.0
|
To Start
Drive and Bus Test - burnindrive
This program uses the same procedures as one of the test programs designed to run under Operating Systems during
UK Government Computer Acceptance Trials
that were carried out in the 1970s and 1980s. Its main successes were identifying a data pattern conscious design fault on the I/O system of Serial #1 CDC Cyber 205 supercomputer and a case of reading the wrong file on a top end IBM 360 running the, then new, MVS Operating System at a NSA type security department.
The default version of burnindrive writes four files, using 164 blocks of 64 KB, repeated 16 times (164.0 MB), with each block containing a unique data pattern (shown below [1]). The files are then read for two minutes, on a sort of random sequence (see below [2]), with data and file ID checked for correct values.
Originally included for disk drives, where rereading is from the disk’s buffer at bus speeds, the last section repetitively reads each block in turn, from one file. In order to maintain fast data transfer speeds, values are checked for correctness every 20 passes. Total time is normally about 5 minutes for all tests, with default parameters.
1. Patterns Generated
Number Pattern Or Hex Number Pattern Or Hex
1 0 0 2 1 1
3 2 2 4 4 4
5 8 8 6 16 10
7 32 20 8 64 40
9 128 80 10 256 100
11 512 200 12 1024 400
13 2048 800 14 4096 1000
15 8192 2000 16 16384 4000
17 32768 8000 18 65536 10000
19 131072 20000 20 262144 40000
21 524288 80000 22 1048576 100000
23 2097152 200000 24 4194304 400000
25 8388608 800000 26 16777216 1000000
27 33554432 2000000 28 67108864 4000000
29 134217728 8000000 30 268435456 10000000
31 536870912 20000000 32 1073741824 40000000
33 1 1 34 5 5
35 21 15 36 85 55
37 341 155 38 1365 555
39 5461 1555 40 21845 5555
41 87381 15555 42 349525 55555
43 1398101 155555 44 5592405 555555
45 22369621 1555555 46 89478485 5555555
47 357913941 15555555 48 1431655765 55555555
49 3 3 50 51 33
51 819 333 52 13107 3333
53 209715 33333 54 3355443 333333
55 53687091 3333333 56 858993459 33333333
57 7 7 58 455 1C7
59 29127 71C7 60 1864135 1C71C7
61 119304647 71C71C7 62 15 F
63 3855 F0F 64 986895 F0F0F
65 252645135 F0F0F0F 66 31 1F
67 31775 7C1F 68 32537631 1F07C1F
69 63 3F 70 258111 3F03F
71 127 7F 72 2080895 1FC07F
73 255 FF 74 16711935 FF00FF
75 511 1FF 76 1023 3FF
77 2047 7FF 78 4095 FFF
79 8191 1FFF 80 16383 3FFF
81 32767 7FFF 82 65535 FFFF
83 -1 FFFFFFFF 84 -2 FFFFFFFE
85 -3 FFFFFFFD 86 -5 FFFFFFFB
87 -9 FFFFFFF7 88 -17 FFFFFFEF
89 -33 FFFFFFDF 90 -65 FFFFFFBF
91 -129 FFFFFF7F 92 -257 FFFFFEFF
93 -513 FFFFFDFF 94 -1025 FFFFFBFF
95 -2049 FFFFF7FF 96 -4097 FFFFEFFF
97 -8193 FFFFDFFF 98 -16385 FFFFBFFF
99 -32769 FFFF7FFF 100 -65537 FFFEFFFF
101 -131073 FFFDFFFF 102 -262145 FFFBFFFF
103 -524289 FFF7FFFF 104 -1048577 FFEFFFFF
105 -2097153 FFDFFFFF 106 -4194305 FFBFFFFF
107 -8388609 FF7FFFFF 108 -16777217 FEFFFFFF
109 -33554433 FDFFFFFF 110 -67108865 FBFFFFFF
111 -134217729 F7FFFFFF 112 -268435457 EFFFFFFF
113 -536870913 DFFFFFFF 114 -1073741825 BFFFFFFF
115 -2 FFFFFFFE 116 -6 FFFFFFFA
117 -22 FFFFFFEA 118 -86 FFFFFFAA
119 -342 FFFFFEAA 120 -1366 FFFFFAAA
121 -5462 FFFFEAAA 122 -21846 FFFFAAAA
123 -87382 FFFEAAAA 124 -349526 FFFAAAAA
125 -1398102 FFEAAAAA 126 -5592406 FFAAAAAA
127 -22369622 FEAAAAAA 128 -89478486 FAAAAAAA
129 -357913942 EAAAAAAA 130 -1431655766 AAAAAAAA
131 -4 FFFFFFFC 132 -52 FFFFFFCC
133 -820 FFFFFCCC 134 -13108 FFFFCCCC
135 -209716 FFFCCCCC 136 -3355444 FFCCCCCC
137 -53687092 FCCCCCCC 138 -858993460 CCCCCCCC
139 -8 FFFFFFF8 140 -456 FFFFFE38
141 -29128 FFFF8E38 142 -1864136 FFE38E38
143 -119304648 F8E38E38 144 -16 FFFFFFF0
145 -3856 FFFFF0F0 146 -986896 FFF0F0F0
147 -252645136 F0F0F0F0 148 -32 FFFFFFE0
149 -31776 FFFF83E0 150 -32537632 FE0F83E0
151 -64 FFFFFFC0 152 -258112 FFFC0FC0
153 -128 FFFFFF80 154 -2080896 FFE03F80
155 -256 FFFFFF00 156 -16711936 FF00FF00
157 -512 FFFFFE00 158 -1024 FFFFFC00
159 -2048 FFFFF800 160 -4096 FFFFF000
161 -8192 FFFFE000 162 -16384 FFFFC000
163 -32768 FFFF8000 164 -65536 FFFF0000
2. Sequences - First 16
No. File No. File No. File No. File
1 0 1 2 3 5 0 2 1 3 9 0 3 1 2 13 0 1 2 3
2 1 2 3 0 6 1 3 2 0 10 1 0 3 2 14 1 2 3 0
3 2 3 0 1 7 2 0 1 3 11 2 1 0 3 15 2 3 0 1
4 3 0 2 1 8 3 1 2 0 12 3 2 1 0 16 3 0 2 1
|
To Start
Drive and Bus Test Part 2
Run time parameters [1] and an example of results [2] with default settings are shown below. Writing speed is not that fast, 7.4 MB/second here, as data is changed for each block written. Reading speeds are much faster at 15.9 MB/second. To speed this up on comparison, data blocks are summed using using AND and OR functions, and byte by byte checking only carried out if the sumcheck is wrong.
Note that file reading details here are reported at approximately 41 second intervals, but this can be much longer with larger files.
The second part logs the number of repeat read passes each period (S or Seconds) for one of each of the 164 x 64 KB data pattern blocks.
In this case, there are 49200 block reads in 2.77 minutes or 18.5 MB/second.
Last details are a summary of results using larger files [3].
1. Run Time Parameters - Upper or Lower Case
Default
R or Repeats Data size, multiplier of 10.25 MB, more or less 16
P or Patterns Number of patterns for smaller files < 164 164
M or Minutes Large file reading time 2
L or Log Log file name extension 0 to 99 0
S or Seconds Time to read each block, last section 1
F or FilePath For other than SD card or SD card directory as benchmark
C or CacheData Omit O_DIRECT on opening files to allow caching No
O or OutputPatterns Log patterns and file equences used as above No
D or DontRunReadTests Or only run write tests No
Format ./burnindrive Repeats 16, Minutes 2, Log 0, Seconds 1
or ./burnindrive R 16, M 2, L 0, S 1
2. Example Log SD Card - IOlog0.txt
Command ./burnindrive
###############################################################
arm_freq=700
core_freq=250
sdram_freq=400
over_voltage=0
Current Directory Path:
/home/pi/benchmarks/burndrive
Total MB 14685, Free MB 12717, Used MB 1968
Linux Storage Stress Test for ARM v1.0, Thu Oct 17 15:37:37 2013
File size 164.00 MB x 4 files, minimum reading time 2.0 minutes
File 1 164.00 MB written in 23.16 seconds
File 2 164.00 MB written in 21.70 seconds
File 3 164.00 MB written in 21.68 seconds
File 4 164.00 MB written in 21.78 seconds
Total 88.32 seconds, Elapsed 88.32 seconds
Start Reading Thu Oct 17 15:39:05 2013
Read passes 1 x 4 Files x 164.00 MB in 0.69 minutes
Read passes 2 x 4 Files x 164.00 MB in 1.37 minutes
Read passes 3 x 4 Files x 164.00 MB in 2.06 minutes
Start Repeat Read Thu Oct 17 15:41:09 2013
Passes in 1 second(s) for each of 164 blocks of 64KB:
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300 300
300 300 300 300 300 300 300 300 300 300
49200 read passes of 64KB blocks in 2.77 minutes
End of test Thu Oct 17 15:43:56 2013
SYSTEM INFORMATION
See General above
3. Larger Files
Command ./burnindrive Repeats 80
###############################################################
File size 820.00 MB x 4 files, minimum reading time 2.0 minutes
File 1 820.00 MB written in 103.72 seconds
File 2 820.00 MB written in 104.86 seconds
File 3 820.00 MB written in 105.32 seconds
File 4 820.00 MB written in 107.42 seconds
Total 421.32 seconds, Elapsed 421.33 seconds
Read passes 1 x 4 Files x 820.00 MB in 3.40 minutes
|
To Start
Drive Test Not Cached/Cached
Three tests were run to show differences whether data is cached [1] in RAM or written with Direct I/O [2], to avoid caching. A non-cached and a cached test used four 164 MB files, then a further cached test [3] with four 82 MB files that could fit within the 512 MB RAM. The
temperature monitoring
program [4] was run at the same time but, as shown below, did not show any significant increases.
System utilisation was also monitored using vmstat [5], with details when writing and reading the large files being shown below.
In all tests, bi and bo show similar speeds to those measured by the benchmark, when data transfer to the drive actually takes place. CPU utilisation is quite high but the remainder, in wa (waiting for I/O) time, can be used by other processes, as proved in further tests. Comparing tests 1 and 2, the latter is slightly faster, with cache space increased and free memory reduced.
The third test has similar writing speeds to the second one. This time all data can fit in the cache, with bi shown as zero, CPU utilisation 100% and benchmark reading speeds much faster.
Repetitively reading the same block produces an even higher speed increase, probably involving reading from the CPU internal cache.
###############################################################
2. lxterminal -e ./burnindrive Minutes 10, Seconds 3
4. lxterminal -e ./RPiTemperature Pases 20, Seconds 60
2. File size 164.00 MB x 4 files, minimum reading time 10.0 minutes
Writing 88.56 seconds, Elapsed 88.57 seconds = 7.4 MB/second
Read passes 15 x 4 Files x 164.00 MB in 10.33 minutes = 15.9 MB/second
Passes in 3 second(s) for each of 164 blocks of 64KB:
147400 read passes of 64KB blocks in 8.30 minutes = 18.5 MB/second
4. Temperature Minimum = 50.3'C Maximum = 52.5'C
5. VMSTAT Memory KB/s in/out @@@@@ %Utilisation
r b swpd free buff cache si so bi bo in cs us sy id wa
Write 1 1 0 342848 5746 33111 0 0 3 7486 3702 1055 13 45 0 43
Read 1 1 0 345295 5906 33164 0 0 16235 1 6174 1317 13 13 0 74
@@@@@ = interrupts and context switches per second
###############################################################
1. lxterminal -e ./burnindrive Minutes 10, Seconds 3, Cached
4. lxterminal -e ./RPiTemperature Pases 20, Seconds 60
1. File size 164.00 MB x 4 files, minimum reading time 10.0 minutes
Writing 57.45 seconds, Elapsed 57.46 seconds = 11.4 MB/second
Read passes 21 x 4 Files x 164.00 MB in 10.34 minutes = 22.2 MB/second
2694700 read passes of 64KB blocks in 8.21 minutes = 341.9 MB/second
4. Temperature Minimum = 50.8'C Maximum = 54.1'C
5. VMSTAT Memory KB/s in/out @@@@@ %Utilisation
r b swpd free buff cache si so bi bo in cs us sy id wa
Write 0 1 0 52014 3215 327383 0 0 26 10492 1560 2488 14 33 0 54
Read 0 1 0 11831 1209 372450 0 0 18968 5 2998 479 17 25 0 59
###############################################################
3. lxterminal -e ./burnindrive Minutes 10, Seconds 3, Repeats 8, Cached
4. lxterminal -e ./RPiTemperature Pases 20, Seconds 60
3. File size 82.00 MB x 4 files, minimum reading time 10.0 minutes
Writing 25.91 seconds, Elapsed 27.44 seconds = 12.0 MB/second
Read passes 164 x 4 Files x 82.00 MB in 10.03 minutes = 89.4 MB/second
2980360 read passes of 64KB blocks in 8.21 minutes = 378.1 MB/second
4,Temperature Minimum = 50.8'C Maximum = 54.1'C
5. VMSTAT Memory KB/s in/out @@@@@ %Utilisation
r b swpd free buff cache si so bi bo in cs us sy id wa
Write 2 1 0 100726 1748 277850 0 0 1 10128 1249 1575 25 37 0 38
Read 1 0 0 17868 1820 358952 0 0 0 5 908 67 51 49 0 0
|
To Start
Drive Test LAN Setup
My Raspberry Pi is connected to a PC Windows Workgroup via the Ethernet port. In the root directory /media, I have a new directory (mkdir public), used to replicate remote shared directories via a mount command. In my case, all mounted shares contain a directory named test. Detailed content can be seen via RPi File Manager. Commands used are shown below.
Windows [1] - Command ipconfig identifies the IP Address as 192.168.0.2, in my case. The mount command password required is the one for Raspberry Pi.
Linux [2] - This requires an ifconfig eth0 (or eth1 for me showing 192.168.0.3). In this case, Linux user name and password are needed for the mount command.
WiFi Linux - IP Address available via Wireless Properties.
The benchmark was run using drvspdLAN.sh script file, shown below [3]. IMPORTANT - The burnindrive command [4] requires the Cached parameter. Without this, the remote files cannot be written (Direct I/O cannot be used). The script file also executes commands to monitor CPU activity [5] and LAN traffic [6] at the same time. An example of average results whilst writing and reading large files is included below. This shows that data packet size averages about 1450 bytes and acknowledgement around 50 bytes [6]. Also, CPU utilisation is around 100% [5 us+sy], with a particularly high count of interrupts per second.
Cache size increased to 367 MBytes [5] (out of 512) as the benchmark was running, not large enough to contain 4 x 164 MB. In this case, most data was transferred over the LAN during the reading phase.
sudo apt-get install sysstat
1. Windows Mount
IP address command ipconfig
sudo mount -t cifs -o dir_mode=0777,file_mode=0777 //192.168.0.2/d /media/public
password RPi password
2. Linux Mount
IP address command ifconfig eth0 (or eth1)
sudo mount -t cifs -o user=uuu,password=ppp //192.168.0.3/all64 /media/public
uuu and ppp are Linux user and password
3. Script file drvspdLAN.sh
4. lxterminal -e ./burnindrive Minutes 2, Seconds 1, Cached, FilePath /media/public/test
5. vmstat 15 32 > vmstatLAN.txt &
6. sar -n DEV 15 32 > sarLAN.txt
5. vmstat Memory KB KB/s in/out @@@@@ %Utilisation
r b swpd free buff cache si so bi bo in cs us sy id wa
Write 1 1 0 11660 892 368476 0 0 2 5 9242 494 5 95 0 0
Read 2 1 0 12372 880 367496 0 0 0 4 5038 1006 13 84 0 3
@@@@@ = interrupts and context switches per second
6. sar -n DEV - Receive rx, Transmit tx, Packets pck, kBytes kB, Second s
Time IFACE rxpck/s txpck/s rxkB/s txkB/s
Write 16:07:42 eth0 2312.74 4797.00 122.98 7038.53
Read 16:09:12 eth0 8946.99 2263.29 12967.53 186.13
|
To Start
Drive Test LAN Results
Below are detailed results communicating with a Windows based PC [1], plus summaries for LAN to Linux [2], LAN to Linux WiFi [3] and LAN to Windows, using smaller file sizes [4]. For the first two, performance was similar, with writing speed for the large files just under 7 MB/second and reading speed around 11 MB/second, the latter probably approaching the maximum possible for a 100M bits per second LAN. These are somewhat less than measured by SAR (see above), where the transmitted data includes protocol overheads.
All four tests produced the same order of performance when repetitively reading the same 64KB block, where, at least after the first occurrence, the data will be cached in RAM. This was confirmed with the SAR measurements showing next no packets transmitted.
With WiFi (rated at 54 Mbps), measured writing and reading speeds were 3.1 and 3.3 MB/second, with SAR indicating averages of 3.7 and 4.6. At least, except for repetitively reading the same block, CPU utilisation was not 100%, but averaged 43% for writing and 64% on reading, the remainder being allocated to “waiting for I/O”.
The last test used 4 x 82 MB files (total 328 MB), with writing speed being similar to that obtained with larger files, but an average of 65.6 MB/second when reading. As shown below, cache size was large enough to contain all the data and there was negligible data received over the LAN.
####################################################################
1. Windows - MB/second Write 6.8, Read 11.0
Selected File Path:
/media/public/test/
Total MB 230000, Free MB 81289, Used MB 148711
Linux Storage Stress Test for ARM v1.0, Thu Nov 14 16:06:43 2013
File size 164.00 MB x 4 files, minimum reading time 2.0 minutes
File 1 164.00 MB written in 24.17 seconds
File 2 164.00 MB written in 23.56 seconds
File 3 164.00 MB written in 24.27 seconds
File 4 164.00 MB written in 24.00 seconds
Total 95.99 seconds, Elapsed 96.00 seconds
Start Cached Reading Thu Nov 14 16:08:19 2013
Read passes 1 x 4 Files x 164.00 MB in 0.99 minutes
Read passes 2 x 4 Files x 164.00 MB in 1.98 minutes
Read passes 3 x 4 Files x 164.00 MB in 2.98 minutes
Start Cached Repeat Read Thu Nov 14 16:11:17 2013
Passes in 1 second(s) for each of 164 blocks of 64KB:
5680 6380 5620 6300 6200 6420 6140 6420 6280 6320 6100
6020 5500 5780 5620 6160 6260 6200 5860 6220 5040 6080
To
5800 6140 4320 5640 6060 6220 6300 6140 5040 4820 6460
5800 6300 4380 2840 2660 2940 2640 3040 5260 6420
938700 read passes of 64KB blocks in 2.74 minutes
End of test Thu Nov 14 16:14:02 2013
####################################################################
2. Linux - MB/second Write 6.7, Read 11.1
Selected File Path:
/media/public/test/
Total MB 11263, Free MB 2237, Used MB 9026
File 4 164.00 MB written in 24.48 seconds
Read passes 3 x 4 Files x 164.00 MB in 2.95 minutes
955080 read passes of 64KB blocks in 2.74 minutes
####################################################################
3. WiFi Linux - MB/second Write 3.1, Read 3.3
Selected File Path:
/media/public/test/
Total MB 23468, Free MB 18495, Used MB 4972
File 4 164.00 MB written in 50.88 seconds
Read passes 1 x 4 Files x 164.00 MB in 3.32 minutes
969440 read passes of 64KB blocks in 2.74 minutes
####################################################################
4. Windows Smaller Files - MB/second Write 6.8, Read 65.6
Selected File Path:
/media/public/test/
Total MB 230000, Free MB 81289, Used MB 148711
File 4 82.00 MB written in 12.05 seconds
Read passes 24 x 4 Files x 82.00 MB in 2.00 minutes
940200 read passes of 64KB blocks in 2.74 minutes
vmstat Memory KB/s in/out @@@@@ %Utilisation
r b swpd free buff cache si so bi bo in cs us sy id wa
Write 1 0 0 12300 4956 369328 0 0 0 6 9783 592 4 96 0 0
Read 2 0 0 12344 5148 369476 0 0 0 5 1158 84 14 86 0 0
@@@@@ = interrupts and context switches per second
sar -n DEV - Receive rx, Transmit tx, Packets pck, kBytes kB, Second s
Time IFACE rxpck/s txpck/s rxkB/s txkB/s
Write 12:33:55 eth0 2473.67 5138.73 131.22 7539.42
Read 12:35:25 eth0 3.54 4.07 0.54 0.61
|
To Start
Drive Test USB Setup
The benchmark was run on USB drives via an unpowered mini USB hub, with the keyboard and mouse also connected. To identify the required file path, command df -l was executed [1], with results shown below. In this case, a USB flash drive (/media/FAT) and a powered external disk drive were connected. The latter has an Ext4 formatted and bootable partition (/dev/sdd2 with the long mounted file path) and a FAT partition (/media/6449-7525).
The identified file path contents can be examined by RPi File Manager, to select a suitable directory for the test files. In the case of the Linux partition, it might be necessary to create a directory and set permissions [2]. The example below is via changing directories via /media. If required, the benchmark execution file can be copied into the selected file path directory and run from there.
Commands to run the test program, from LXTerminal pointing to the directory containing the benchmark, and in a different terminal window, are shown below [3]. In this case, each was in a script file, along with vmstat to show system utilisation.
As the benchmark identifies drive capacity, used and free space [4], it is useful to confirm that the required drive has been used, by comparing them with df -l numbers [1].
1. Identify Drives
pi@raspberrypi ~ $ df -l
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 15037448 1855468 12552624 13% /
/dev/root 15037448 1855468 12552624 13% /
devtmpfs 216108 0 216108 0% /dev
tmpfs 44876 452 44424 2% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 89740 0 89740 0% /run/shm
/dev/mmcblk0p1 57288 18552 38736 33% /boot
/dev/sdc1 15839088 16 15839072 1% /media/FAT
/dev/sdd2 28834812 4010500 23359584 15% /media/e918b2c6-3689-418a-a641-112b1a446de3
/dev/sdd5 78136128 8709600 69426528 12% /media/6449-7525
2. Create Directory and Permissions
pi@raspberrypi /media/e918b2c6-3689-418a-a641-112b1a446de3 $ sudo mkdir temp
pi@raspberrypi /media/e918b2c6-3689-418a-a641-112b1a446de3 $ sudo chmod 0777 temp
3. Benchmark Running Commands
lxterminal -e ./burnindrive Minutes 2, Seconds 1, FilePath /media/FAT/test
lxterminal -e ./burnindrive Minutes 2, Seconds 1, FilePath /media/6449-7525/test
lxterminal -e ./burnindrive Minutes 2, Seconds 1,
FilePath /media/e918b2c6-3689-418a-a641-112b1a446de3/temp
vmstat 15 24 > vmstatUSB.txt
4. Confirm Correct Drive
Total MB 15468, Free MB 15468, Used MB 0
Total MB 76305, Free MB 67799, Used MB 8505
Total MB 28159, Free MB 24242, Used MB 3917
|
To Start
Drive Test USB Results
Results from the three drives or partitions are shown below (USB flash drive [1], FAT disk drive [2], Linux Ext4 disk drive [3]). MB/second measured by the benchmark for reading and writing are generally confirmed by vmstat bi and bo numbers. An exception is the faster writing speed with Ext4 format, where 39 seconds running time was not appropriate with 15 second vmstat sampling.
As for the SD drive measurements, CPU utilisation is quite high but not 100%, as found with the LAN tests. It seems that writing Ext4 files is faster than FAT, but further tests are probably needed, with the same device/partition using alternative formats.
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1. /media/FAT
W 0 1 0 284368 33012 65560 0 0 0 8252 3833 1647 11 36 0 53
R 0 1 0 283996 33256 65496 0 0 17933 1 6695 2883 14 25 0 62
B 0 1 0 282980 33360 66140 0 0 20732 3 7462 3079 5 24 0 71
2. /media/6449-7525
W 2 0 0 275632 35536 67548 0 0 2 11816 5202 2366 20 53 0 27
R 0 1 0 275384 35664 67500 0 0 14511 1 5837 2360 12 17 0 71
B 0 1 0 275260 35808 67500 0 0 20454 5 7863 3411 5 23 0 72
3. /media/e918b2c6-3689-418a-a641-112b1a446de3/tmp
W 0 1 0 268328 36236 67840 0 0 3 20873 3309 3358 10 29 0 61
R 0 1 0 268072 36364 67880 0 0 16218 1 2800 2630 10 16 0 73
B 0 1 0 267824 36532 67880 0 0 23851 5 3627 3838 4 21 0 75
1. /media/FAT
W Total Elapsed 4 x 164 MB 82.10 seconds = 8.0 MB/s
R 4 x 4 Files x 164 MB in 2.50 minutes = 17.5 MB/s
B 54380 x 64KB blocks in 2.83 minutes = 20.0 MB/s
2. /media/6449-7525 - FAT
W Total Elapsed 4 x 164 MB 56.80 seconds = 11.5 MB/s
R 3 x 4 Files x 164.00 MB in 2.29 minutes = 14.3 MB/s
B 54820 x 64KB blocks in 2.80 minutes = 20.4 MB/s
3. /media/e918b2c6-3689-418a-a641-112b1a446de3/tmp - Ext4
W Total Elapsed 4 x 164 MB 38.72 seconds = 16.9 MB/s
R 3 x 4 Files x 164.00 MB in 2.14 minutes = 15.3 MB/s
B 65500 x 64KB blocks in 2.80 minutes = 24.4 MB/s
W=Write large files, R=Read large files, B=Block re-reading
|
To Start
USB Drive and Fixed Point Tests and Temperature
A stress test was arrange to run for up to 45 minutes, executing stressInt, fixed point test, and the USB drive test at the same time, whilst monitoring CPU temperature and system utilisation via vmstat. The test was first attempted using maximum raspi-config overclocking but this caused the system to hang. The test ran successfully, stepping overclocking down to the second highest. These settings are shown below [1,2].
In this case, the benchmarks were on the USB drive, a 16 GB Flash Drive [3]. The test programs were first run standalone, using the same 656 MB files but for a shorter time [4, 5]. The USB test had also been run at the 1000 MHz setting, where performance was virtually the same. The longer test was run using a script file, containing the first three commands shown below [6], and the integer benchmark from another LXTerminal.
Multi-tasked burnindrive speeds [7] were a bit faster than standalone measurements, but similar variations can be seen on rerunning the latter a number of times. Thus, it is fair to assume that writing and reading the USB drive was the same under multitasking.
Multi-tasked stressInt speeds [8] were 20% to 30% slower than those during standalone tests, due to part of the CPU time being allocated to service burnindrive. The latter finished first and stressInt regained its maximum reading speed.
Increases in CPU temperature [9] were not particularly significant and rose slightly when the USB drive test finished. The data transfer speeds shown in vmstat [10] were again similar to burnindrive writing and reading [11] measurements. This time, with vmstat, there was no waiting for I/O time reported, this being overlapped with stressInt execution time. Overall CPU utilisation was, of course, 100%.
1. Failed arm_freq=1000
core_freq=500
sdram_freq=600
over_voltage=6
2. Used arm_freq=950
core_freq=250
sdram_freq=450
over_voltage=6
3. Current Directory Path:
/media/62ba9ec9-47d9-4421-aaee-71dd6c0f3707/home/pi/benchmarks/burndrive
Total MB 14894, Free MB 13240, Used MB 1655
4. By Itself ./burnindrive
Write 4 x 656 MB in 221.74 seconds = 11.8 MB/second
Read 4 x 656 MB in 191.40 seconds = 13.7 MB/second
Read 42160 x 64 KB in 174.00 seconds = 15.1 MB/second
5. By Itself ./stressInt 8 KB
Write/Read average 1298 MB/second
Repeat Read average 1404 MB/second
MultiTasking Commands
6. Commands
lxterminal -e ./stressInt Seconds 220, log 2
lxterminal -e ./RPiTemperature Pases 90, Seconds 30
vmstat 30 90 > vmburn.txt
./burnindrive Repeats 64, Minutes 10, Seconds 5
7. ./burnindrive - 1775 seconds
Write 4 x 656 MB in 200.55 seconds = 13.1 MB/second
Read 16 x 656 MB in 744.80 seconds = 14.1 MB/second
Read 204580 x 64 KB in 830.40 seconds = 15.6 MB/second
8. ./stressInt - 8 KB 2640 seconds
Write/Read average 927 MB/second
Repeat Read average 1089 MB/second
Repeat Read average 1455 MB/second after burnindrive finished
9. Temperature 10. vmstat 11. burnindrive
Minutes 'C bi bo in cs us sy id wa
0 48.7 331 8 1559 269 11 9 70 9 Start
5 56.2 0 13483 5635 1987 78 22 0 0 Write
10 57.3 14505 3 5914 2123 82 18 0 0 Read
15 57.3 14500 4 5915 2124 81 20 0 0 Read
20 57.3 15821 8 6334 2319 80 20 0 0 Repeat Read
25 57.3 15629 6 6299 2293 90 10 0 0 Repeat Read
30 58.9 6076 17 3404 960 94 6 0 0 Finished
35 59.5 0 5 1555 99 99 1 0 0
40 59.5 0 4 1555 99 100 0 0 0
45 54.1 0 7 1475 103 2 1 86 11
|
To Start
Paging Tests - Using stressInt
Paging tests were run using stressInt by specifying increasing memory space demands (KBytes run time parameter), such that initially occupied space is swapped out to a drive, the default being the SD card, and some will be swapped back in, if needed. Particularly with a program accessing increasing amounts of data, some or all will also be swapped out and in.
Results reported here [2] were for memory demands of 350, 400 and 420 MBytes, at normal speed and maximum overclocking settings. An extra 600 MB test was run at the lower settings, to demand more space than the 512 MB RAM. The vmstat monitor was run at the same time [3], providing system usage statistics. Commands used to run these programs are shown below [1]. As the running time was generally unpredictable, vmstat was arranged to log 10 second samples, in its own Terminal, and killed when stressInt finished.
At these sizes, running time is much longer than that specified by the normal time parameter, leading to all write and read phases each executing one pass. Running time [2] for the Write/Read phase was calculated from data transfer speeds. Total time, from reported start and stop date/time, appears to be longer than might be expected, but it includes an extra Write/Read/Check test before what could be repeat reading, also an extra read pass, intended for calibrating repeats.
At 350 MB, there is no swapping, but cache and buffer sizes are reduced, slowing down the first write pass. Data transfer speed on overclocking averages 1.57 times faster than with no overclocking, mainly influenced by memory speed differences.
During the first write pass at 400 MB, buffer and cache sizes are further reduced and 40 to 60 MB swapped out, with lots of swaps in and out [Part 1]. At this stage, performance is dependent on speed of the SD card. By the time of the third write test, performance again becomes proportional to system MHz settings, with some system data still swapped out [Part 2].
With data size of 420 MB, there is continuous swapping in and out. Program data demands of 6 x 420 MB or 2.52 GB give rise to 10.4 GB being written or read from the SD card swap file (from average KB in and KB out). There is also a continuous 50% to 80% waiting time for I/O. Bottom line is a speed reduction of 8 to 10 times at 700 MHz, compared with no swapping, and 14 to 17 times with maximum overclocking.
A run was attempted at 500 MB, but the program indicated that there was insufficient memory for this. Then noticing, from vmstat, that maximum swapped out data was less than 100 MB, swap file size was checked via free -h command and it was 100 MB. The file size was changed to 1000 MB (CONF_SWAPSIZE=1000 in /etc/dphys-swapfile). A test was then run, specifying 600 MB, at default MHz settings. Note vmstat [3] shows a maximum of 522 MB swapped. Here, speed is 18 to 22 times slower than with no swapping and 40 GB data is transferred. This run lasted for 51 minutes, not a bad stress test.
The tests were firstly run with the system using a SanDisk Extreme Pro microSDHC UHS-1 Class 10 card (rated at up to 633X or 95 MB/second). A final test used a Verbatim Class 10 card, at 700 MHz and 420 MB data size (SD Card 2). The former was more than twice as fast but using correspondingly increased CPU utilisation.
1. Commands
lxterminal -e ./stressInt KB 600000
vmstat 10 > vmburn4.txt
2. Results MHz MHz
CPU 700 CPU 1000
Core 250 Core 500
SDRAM 400 SDRAM 600
MBytes Per Second At MB Data Size
SD Card 1 1 1 1 1 2 1 1 1 1
MB 350 400 400 420 600 420 350 400 400 420
Write/Read No.
1 139 24 15 14 6 217 25 15
2 209 181 16 8 17 332 157 9
3 206 203 24 8 13 325 318 23
4 206 204 26 8 10 327 318 17
5 202 205 18 8 8 325 323 21
6 206 205 20 8 12 326 323 27
Write/Rd secs 19.6 48.4 204.9 460.7 406.4 12.4 43.3 234.8
Read No.
1 158 159 20 9 8 252 249 25
2 158 159 14 9 8 251 242 25
3 159 159 39 8 4 251 251 27
4 160 155 9 9 7 251 253 13
5 159 160 25 9 5 252 251 9
6 160 159 10 9 9 253 233 9
Total secs 85 125 1082 3085 2560 54 94 1209
3. vmstat
Part 1 Part 2 Part 1 Part 2
Memory KB
Max swapped 8 42216 40912 93204 522500 100288 0 58300 34848 98408
Min free 11764 9224 11628 8196 8084 8080 11756 8432 8848 8204
Min buffer 88 44 60 44 44 44 560 44 44 44
Min cache 18868 4788 5228 1540 2260 1616 21296 4272 4452 1204
Per second
Max KB swaps in 0 4477 3 7186 13382 5070 0 4399 3 7888
Max KB swaps out 0 5600 0 6861 11576 4980 0 7918 115 7420
Max KB in 16 5059 21 11246 14398 7362 9 7993 966 9794
Max KB out 7 5602 3 6864 11583 4985 10 7920 118 7428
Max interrupts 1163 3313 1167 6164 6989 4853 791 3499 1180 5388
Max context sw 71 992 69 1680 2281 1016 250 1281 198 1575
% Utilisation
User 100 60 100 19 7 6 98 21 99 9
System 0 10 1 19 23 13 2 19 1 21
Idle 0 0 0 0 0 0 14 7 0 0
Wait I/O 0 31 0 60 70 82 0 54 0 69
|
To Start
Assembly Code
Following are details of compiled assembly code for stressInt Fixed Point Test.
Compile command to produce full listing is cc stressint.c -lrt -lc -lm -O3 -S
writeData: errorcheck: errorcheck: readData:
part 2
.L3: .L10: .L40:
strr2, [r3, #32] ldrr2, [r3, #16] orrr8, r8, r4 ldrr9, [r3, #32]
strr2, [r3, #36] ldrip, [r3, #20] andr6, r6, r4 ldrr8, [r3, #36]
strr2, [r3, #40] ldrr1, [r3, #4] andr7, r7, r2 ldrsl, [r3, #48]
strr2, [r3, #44] ldrr8, [r3, #0] orrr8, r8, ip ldrr7, [r3, #52]
strr1, [r3, #48] ldrfp, [r3, #24] orrr2, r1, r9 addsl, r9, sl
strr1, [r3, #52] orrsl, r2, ip andr6, r6, ip addr7, r8, r7
strr1, [r3, #56] andip, r2, ip ldrr1, [r3, #92] ldrr8, [r3, #16]
strr1, [r3, #60] ldrr0, [r3, #8] ldrfp, [r3, #72] addr1, sl, r1
strr2, [r3, #64] ldrr2, [r3, #28] andr7, r7, r9 ldrr6, [r3, #40]
strr2, [r3, #68] orrr9, r8, r1 orrr8, r8, r0 ldrr5, [r3, #56]
strr2, [r3, #72] orrr4, sl, r4 orrr9, r2, sl rsbr1, r8, r1
strr2, [r3, #76] andr8, r8, r1 andr6, r6, r0 ldrr8, [r3, #20]
strr1, [r3, #80] andip, ip, r6 ldrr2, [r3, #112] addr0, r7, r0
strr1, [r3, #84] ldrr1, [r3, #12] ldrr5, [r3, #76] addr5, r6, r5
strr1, [r3, #88] orrr5, r9, r5 ldrip, [r3, #116] ldrfp, [r3, #44]
strr1, [r3, #92] andr7, r8, r7 andr7, r7, sl ldrr6, [r3, #60]
strr2, [r3, #96] ldrr9, [r3, #48] orrr8, r8, r1 rsbr0, r8, r0
strr2, [r3, #100] orrr8, r4, fp andr6, r6, r1 ldrr8, [r3, #24]
strr2, [r3, #104] andip, ip, fp ldrr4, [r3, #96] addr4, r5, r4
strr2, [r3, #108] ldrsl, [r3, #32] orrr9, r9, fp addfp, fp, r6
strr1, [r3, #112] ldrr4, [r3, #52] andr7, r7, fp rsbr4, r8, r4
strr1, [r3, #116] orrr5, r5, r0 orrr8, r8, r2 ldrr8, [r3, #28]
strr1, [r3, #120] orrr8, r8, r2 andr6, r6, r2 ldrr5, [r3, #8]
strr1, [r3, #124] andip, ip, r2 ldrsl, [r3, #100] addip, fp, ip
strr2, [r3, #128] ldrr6, [r3, #56] orrr9, r9, r5 rsbip, r8, ip
strr2, [r3, #132] andr7, r7, r0 andr7, r7, r5 ldrr8, [sp, #4]
strr2, [r3, #136] orrr5, r5, r1 orrr8, r8, ip ldrr6, [r3, #0]
strr2, [r3, #140] ldrr0, [r3, #36] andr6, r6, ip ldrr7, [r3, #4]
strr1, [r3, #144] orrr8, r8, r9 ldrip, [sp, #0] ldrr9, [r3, #12]
strr1, [r3, #148] andip, ip, r9 ldrr0, [r3, #104] addr2, r2, #1
strr1, [r3, #152] ldrfp, [r3, #40] orrr9, r9, r4 rsbr4, r5, r4
strr1, [r3, #156] andip, ip, r4 andr7, r7, r4 ldrr5, [sp, #8]
ldrip, [r4, #0] andr7, r7, r1 addip, ip, #1 cmpr2, r8
addr0, r0, #1 orrr8, r8, r4 orrr9, r9, sl rsbr1, r6, r1
cmpr0, ip orrr1, r5, sl andr7, r7, sl rsbr0, r7, r0
addr3, r3, #128 ldrr5, [r3, #60] ldrr1, [r3, #120] rsbip, r9, ip
bcc.L3 ldrr2, [r3, #44] ldrfp, [r3, #108] addr3, r3, r5
ldrr4, [r3, #80] ldrr2, [r3, #124] bne.L40
andr7, r7, sl orrr9, r9, r0
orrr1, r1, r0 andr7, r7, r0
orrr8, r8, r6 strip, [sp, #0]
andr6, ip, r6 ldrr0, [sp, #4]
ldrr9, [r3, #64] orrr8, r8, r1
ldrip, [r3, #84] andr6, r6, r1
andr7, r7, r0 cmpip, r0
orrr1, r1, fp orrr5, r9, fp
orrr8, r8, r5 orrr4, r8, r2
andr6, r6, r5 andr7, r7, fp
ldrsl, [r3, #68] andr6, r6, r2
ldrr0, [r3, #88] addr3, r3, #128
andr7, r7, fp bne.L10
orrr1, r1, r2
2 add 34 and 10 add
1 branch 1 branch 1 branch
1 compare 1 compare 18 load
33 store 34 load 8 subtract
32 or
1 strip
37 total 103 total 37 total
|
To Start
Roy Longbottom June 2014
The Official Internet Home for my Benchmarks is via the link
Roy Longbottom's PC Benchmark Collection
|