Difference between revisions of "RPi Performance"

From eLinux.org
Jump to: navigation, search
m (Copy edited (e.g. ref. <http://en.wikipedia.org/wiki/LINPACK>).)
 
(22 intermediate revisions by 14 users not shown)
Line 3: Line 3:
  
 
=CPU=
 
=CPU=
==Linpack==
 
  
The Arm has been tested using the linpack benchmark from [http://www.netlib.org/benchmark/linpackc.new], built with gcc with -O3 (Optimisation level 3). Run with array size 200.
+
==LINPACK==
 +
 
 +
The ARM has been tested using the LINPACK benchmark from [http://www.netlib.org/benchmark/linpackc.new], built with gcc with -O3 (Optimisation level 3). Run with array size 200.
  
 
With software floating point
 
With software floating point
Line 149: Line 150:
 
</pre>
 
</pre>
  
However, the majority of compute time is spent in the SQRT function, which for the above test was built without -mfpu=vfp. Using a library with vfp give the following much improved result :
+
However, the majority of compute time is spent in the SQRT function, which for the above test was built without -mfpu=vfp. Using a library with vfp give the following much improved result:
 
<pre>
 
<pre>
 
Loops: 1000, Iterations: 100, Duration: 15 sec.
 
Loops: 1000, Iterations: 100, Duration: 15 sec.
Line 265: Line 266:
  
 
=GPU=
 
=GPU=
The RaspberryPi appears to handle h264 1080p movie from USB to HDMI at least 4MB/s.
+
The Raspberry Pi appears to handle H.264 1080p movie from USB to HDMI at least 4&nbsp;MB/s.
 
 
The Admin "JamesH" said it would handle "basically 1080p30, high profile, >40Mb/s." (5MB/s) in h264
 
 
 
And about WVGA(480p30) or 720p20 in VP8/WEBM
 
  
 +
The Admin "JamesH" said it would handle "basically 1080p30, high profile, >40&nbsp;Mbit/s." (5&nbsp;MB/s) in H.264.
  
 +
And about WVGA(480p30) or 720p20 in VP8/WEBM.
  
 
==ioquake3==
 
==ioquake3==
Line 281: Line 280:
 
  - Download source, compile as delivered
 
  - Download source, compile as delivered
 
  - Start game
 
  - Start game
  - Runs at display's native res, in my case 1280x1024
+
  - Runs at display's native resolution, in my case 1280x1024
  - Bitdepth stuck at 16bpp, not sure how to change, values in q3config.cfg seem to be ignored
+
  - Bitdepth stuck at 16&nbsp;bpp, not sure how to change, values in q3config.cfg seem to be ignored
 
  - In-game console commands:
 
  - In-game console commands:
 
  \timedemo 1
 
  \timedemo 1
Line 299: Line 298:
 
[[Category: RaspberryPi]]
 
[[Category: RaspberryPi]]
  
=IO=
+
=I/O=
  
 
==USB bus==
 
==USB bus==
*All IO uses the same bus so the combination of all IO can not exceed the the bus speed of an as yet hypothetical 60MB/s
+
*All I/O uses the same bus so the combination of all I/O can not exceed the bus speed of an as yet hypothetical 60&nbsp;MB/s
*A test with a fast USB-Stick showed that Raspberry Pi can achieve about 30 MB/s:
+
*A test with a fast USB-Stick showed that Raspberry Pi can achieve about 30&nbsp;MB/s:
 
<pre>root@raspberrypi:~# dd if=/dev/sda of=/dev/null bs=32M count=10 iflag=direct
 
<pre>root@raspberrypi:~# dd if=/dev/sda of=/dev/null bs=32M count=10 iflag=direct
 
10+0 records in
 
10+0 records in
Line 310: Line 309:
 
</pre>
 
</pre>
  
==SD card==
+
== SD card ==
*TODO test
 
 
 
'''Note: the dd test should probably use i/oflags=direct for reads and writes.  But that will change the results recorded to date'''
 
===Compile/Run===
 
<pre>
 
# write
 
dd if=/dev/zero of=~/test.tmp bs=500K count=1024
 
# read
 
dd if=~/test.tmp of=/dev/null bs=500K count=1024
 
# cleanup
 
rm ~/test.tmp
 
# find out which kernel you're running
 
uname -a
 
</pre>
 
 
 
===Results===
 
* Depends on SD card used http://elinux.org/RaspberryPiBoardVerifiedPeripherals#SD_cards
 
  
{| border="1"  class="sortable"
+
This section has been moved to [[RPi_SD_cards#Performance]]
! SD Card !! Read (MB/s) !! Write (MB/s) !! class="unsortable" | Distro !! class="unsortable" | Kernel !! class="unsortable" | Notes
 
|-
 
| ADATA 8GB SDHC Class 10 (ASDH8GCL10-R) || 19.6 || 18.8 || 2012-08-04 Debian Wheezy "Raspbian" || Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux ||
 
|-
 
| ADATA 32GB SDHC Class 10 (ASDH32GCL10-R) || 20.1 || 6.4 || 2012-06-18-wheezy-beta || Linux raspberrypi 3.1.9+ #152 PREEMPT Fri Jul 6 18:47:16 BST 2012 armv6l GNU/Linux ||
 
|-
 
| [http://amzn.com/B0058GH0LS AmazonBasics SDHC Class 10 8GB] || 19.3 || 8.6 || Debian Wheezy "Raspbian" || Linux massah 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux ||
 
|-
 
| [http://amzn.com/B0058GH0LS AmazonBasics SDHC Class 10 8GB] || 17 || 9.4 || Debian Wheezy "Raspbian" || Linux massah 3.1.9+ #202 PREEMPT Wed Jul 25 22:11:06 BST 2012 armv6l GNU/Linux || Same board and card as above, slightly newer kernel.
 
|-
 
| Extrememory SDHC 16GB class 10 || 4.7 || 4.5 || Debian Wheezy "Raspbian" || Linux raspbian 3.1.9+ #52 ||
 
|-
 
| Extrememory SDHC 16GB class 10 || 11.3 || 5.4 || Debian Wheezy "Raspbian" || Linux raspbian 3.1.9+ #101 || init_emmc_clock=200000000 in config.txt
 
|-
 
| Extrememory SDHC 16GB class 10 || 18.2 || 6.3 || Debian Wheezy "Raspbian" || Linux raspbian 3.1.9+ custom || kernel and firmware as of 17.06.2012, no extra option in config.txt
 
|-
 
| Extrememory SDHC 16GB class 10 <br/>(man:0x000012 oem:0x3456 name:F0F0F hwrev:0x1 fwrev:0x0) || 16.9 || 10.7 || archlinuxarm-13-06-2012 || Linux alarmpi 3.1.9-25-ARCH+ #1 PREEMPT ||
 
|-
 
| Extrememory SDHC 32GB class 10 <br/>(man:0x000003 oem:0x5344 name:SMI  hwrev:0x1 fwrev:0x0) || 18.7 || 16.5 || archlinuxarm-13-06-2012 || Linux alarmpi 3.1.9-25-ARCH+ #1 PREEMPT ||
 
|-
 
| Farnell Branded (Samsung) SDHC 4GB Class 4 (MMBTF04GWBCA-ME) || 20.1 || 6.9 || Debian Wheezy Raspbian || Linux raspbian 3.1.9+ #168 || Pi overclocked to 900 Mhz arm_freq and 500 Mhz sdram_freq
 
|-
 
| Fugi SDHC 32GB class 10 (P10NM00580A) || 12.7 || 19.8 || Debian Wheezy Raspbian || Linux raspbian 3.1.9+ #168 || man:0x000073 oem:0x4247 name:NCard hwrev:0x1 fwrev:0x0
 
|-
 
| Integral SDHC 16GB class 10 ||17.7 || 19.6 || Debian Wheezy Raspbian || Linux raspbian 3.1.9+ #168 ||
 
|-
 
| Kingmax 8GB microSDHC Class 4 (KM08GMCSDHC41A) || 13.6 || 3.7 || Debian Wheezy Raspbian || Linux 3.1.9+ #242 PREEMPT Wed Aug 1 19:47:22 BST 2012 ||
 
|-
 
| Kingston SDHC 4GB class 4 ||4.5 ||4.1 ||Debian Squeeze "debian6-19-04-2012" ||Linux raspberrypi 3.1.9+ #52 Tue May 8 23:49:32 BST 2012 ||
 
|-
 
|Kingston SDHC 4GB class 4 ||4.2 ||2.5 ||archlinuxarm-19-04-2012 ||Linux alarmpi 3.1.9-13+ #6 Thu May 10 00:48:37 UTC 2012 ||Identical card to one above. One to look into, as I was expecting Arch to be faster...
 
|-
 
|Kingston uSDHC 4GB class 4 ||4.0 ||3.8 ||Debian Squeeze ||Linux 3.1.9+ #90 ||
 
|-
 
|Kingston uSDHC 8GB class 4 (SDC4/8GB) ||4.7 ||3.7 ||archlinuxarm-29-04-2012 ||Linux alarmpi 3.1.9+ #66 Thu May 17 16:56:20 BST 2012 ||[http://dl.dropbox.com/u/268147/rpi/Kingston_uSD_8GB_CDM_Bench.zip CrystalDiskMark results (FAT32)] This is my only card that can be counted on to boot up on each plug-in.
 
|-
 
|Kingston SDHC 8GB class 4 (SD4/8GB) ||4.6 ||3.0 ||archlinuxarm-29-04-2012 ||Linux alarmpi 3.1.9+ #66 Thu May 17 16:56:20 BST 2012 ||[http://dl.dropbox.com/u/268147/rpi/Kingston_SD4-8GB_CDM_Bench.zip CrystalDiskMark results (FAT32)]
 
|-
 
|Kingston SDHC 8GB class 4 (SD4/8GB) ||13.2 ||3.4 || Hexxeh Raspbian r3 ||Linux raspbian 3.1.9+ #202 PREEMPT Wed Jul 25 22:11:06 BST 2012 armv6l GNU/Linux || man:0x000002 oem:0x544d name:SA08G hwrev:0x1 fwrev:0x0
 
|-
 
|Kingston SDHC 32GB class 10 ||10.8 ||8.1 ||Fedora 17 ARM snapshot 07 May 2012 ||Linux fedora-arm 3.1.9 #1 ||mmc0: note - long write sync 1453000ns - 14608 its. - kernel/module problems?
 
|-
 
|Kingston SDHC 32GB class 10 ||4.7 ||4.1 ||Fedora 17 ARM nightly snapshot ||Linux fedora-arm 3.1.9+ #101 PREEMPT Mon Jun 4 17:19:44 BST 2012 ||custom kernel from raspberrypi github - no more mmc0 sync problems
 
|-
 
|Kingston SDHC 32GB class 10 ||4.6 ||3.5 ||Debian Squeeze "debian6-19-04-2012" ||Linux raspberrypi 3.1.9+ #90 ||
 
|-
 
|Panasonic SDHC 8GB class 6 ||4.8 ||4.4 || || ||
 
|-
 
|Panasonic SDHC 8GB class 4 ||11.1 || 9.7 || Debian Wheezy "Rasbpian" || Linux rpi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux ||
 
|-
 
|Patriot microSDHC 16GB Class 10 (PSF16GMSHC10) ||9.5 ||5.2 ||Fedora 14 ||Linux raspi 3.1.9+ #101 ||init_emmc_clock=200000000 in config.txt
 
|-
 
|Patriot SDHC 16GB Class 10 (PSF16GSDHC10) ||19.3 ||9.3 ||Debian Wheezy "Rasbpian" ||Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux ||
 
|-
 
|Patriot SDHC 32GB Class 10 UHS-1 (PEF32GSDHC10U1) ||20.4 ||12.1 ||Debian Wheezy "Rasbpian" ||Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux ||
 
|-
 
|Samsung SDHC 16GB Class 10 (MB-SPAGA) ||10.7 ||8.8 ||Fedora 17 ARM snapshot 07 May 2012 - GUI release ||Linux fedora-arm 3.1.9 #1 ||Had "long write sync" errors, slow boot times and then system instability using USB port on Macbook, switched to iPhone charger (5V 1A) and warning disappeared
 
|-
 
|Samsung SDHC 16GB Class 10 (MB-SPAGA) ||19.6 ||18.7 || Debian Wheezy "Raspbian"  ||Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armvl GNU/Linux ||(Same user / card as above, definitely notable that Raspbian is superior)
 
|-
 
|Samsung microSDHC 16GB Class 10 (MB-MPAGA/US) || 19.8 || 15.8 || Debian Wheezy "Raspbian" || Linux pisces 3.1.9+ #155 PREEMPT Mon Jul 9 12:49:19 BST 2012 armv6l GNU/Linux || -
 
|-
 
|Samsung microSDHC 16GB Class 4 (MB-MS4GA/US) || 19.2 || 5.5 || Debian Wheezy "Raspbian" || ? || -
 
|-
 
|SanDisk microSD 2GB ||4.7 ||4.2 ||archlinuxarm-29-04-2012 ||Linux alarmpi 3.1.9+ #66 Thu May 17 16:56:20 BST 2012 ||[http://dl.dropbox.com/u/268147/rpi/SanDisk_2GB_uSD_CDM_Bench.zip CrystalDiskMark results (FAT32)] Card has no serial/is likely a fake.
 
|-
 
|SanDisk Ultra SDHC 4GB class 4 ||4.7 ||4.4 ||Raspbian Wheezy || Linux raspberry-pi 3.1.9+ #1 PREEMPT Wed Jun 6 16:26:14 CEST 2012 armv6l GNU/Linux || man:0x000003 oem:0x5344 name:SD04G hwrev:0x8 fwrev:0x0
 
|-
 
|SanDisk Ultra II SDHC 4GB class 4 (15 MB/s)||20.9 ||14.6 ||Raspbian Wheezy || Linux raspberry-pi 3.1.9+ ||
 
|-
 
|SanDisk SDHC 8GB class 4 ||11.1 ||5.6 ||Raspbian Wheezy || Linux raspberrypi 3.1.9+ #202 PREEMPT || After Hexxeh rpi-update. <br />man:0x000003 oem:0x5344 name:SD08G hwrev:0x8 fwrev:0x0
 
|-
 
|SanDisk SDHC 8GB class 4 ||4.7 ||3.2 ||Debian Squeeze || ||
 
|-
 
|SanDisk Ultra SDHC I 8GB class 6 "30MB/s*" ||19.5 || 7.6 ||archlinuxarm || 3.1.9-22-ARCH+ #1 PREEMPT Sun Jun 17 13:54:30 UTC 2012 || "mmc0: error -84 whilst initialising SD card" at bootup, but works fine
 
|-
 
|SanDisk Ultra SDHC I 8GB class 10 "30MB/s*" ||19.3 || 3.2 ||Raspbian Wheezy || 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 ||
 
|-
 
|SanDisk Ultra SDHC I 8GB class 10 "30MB/s*" || 13.6 || 14.5 || raspbmc rc3 || Linux raspbmc 3.1.9-test-12-06 #1 PREEMPT Mon Jun 18 20:07:45 UTC 2012 armv6l GNU/Linux ||
 
|-
 
|SanDisk Ultra SDHC II 16GB class 2 "15MB/s*" ||16.7 || 16.2 || Raspbian Wheezy || 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 || man:0x000003 oem:0x5344 name:SD16G hwrev:0x8 fwrev:0x0
 
|-
 
|SanDisk Ultra SDHC 16GB class 10 UHS-1 "30Mb/s" (SDSDU-016G-U46) ||20.9 ||18.1 ||Raspbian Wheezy || Linux raspberrypi 3.1.9+ #202 PREEMPT || After Hexxeh rpi-update. <br />man:0x000003 oem:0x5344 name:SU16G hwrev:0x8 fwrev:0x0
 
|-
 
|SanDisk Extreme SDHC I 4GB class 10 "30MB/s" || 19.7 || 21.0 || 2012-07-15-wheezy-raspbian || Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux || Only boots with images with new firmware, didn't boot with previous images.
 
|-
 
|SanDisk Extreme SDHC I 8GB class 10 "30MB/s" || 17.7 || 19.7 || Archlinuxarm 2012-06-13 || Linux raspi 3.1.9-28-ARCH+ #1 PREEMPT Fri Jul 6 23:07:26 UTC 2012 armv6l GNU/Linux ||
 
|-
 
|SanDisk SDHC 32GB class 6 ||4.6 ||4.8 || || ||
 
|-
 
|SanDisk uSDXC 64GB class 6 ||4.9 ||3.8 ||archlinuxarm-29-04-2012 ||Linux alarmpi 3.1.9+ #66 Thu May 17 16:56:20 BST 2012 ||[http://dl.dropbox.com/u/268147/rpi/SanDisk_64GB_uSDXC_CDM_Bench.zip CrystalDiskMark results (FAT32)]
 
|-
 
|TDK microSDHC 4GB, Class 4 (80-56-10301-004G) ||11.2 ||4.7 ||Debian Wheezy "Raspbian" (2012-07-15) ||3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 ||
 
|-
 
|Transcend SDHC 8GB class 6 ||5.8 ||5.8 || || || |
 
|-
 
|Transcend SDHC 8GB Class 6 (TS8GSDHC6) ||4.6 ||4.0 ||Debian Squeeze "debian6-19-04-2012" ||Linux raspberrypi 3.1.9+ #90 Wed Apr 18 18:23:05 BST 2012  armv61 GNU/Linux ||Tested with dd. Card doesn't maintain the promised minimum class speed.
 
|-
 
|Transcend SDHC 8GB Class 4 (TS8GSDHC4) ||11.1 ||8.1 ||Debian Wheezy "Rasbpian" ||Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux ||man:0x000003 oem:0x5344 name:SD08G hwrev:0x8 fwrev:0x0
 
|-
 
|Transcend SDHC 8GB Class 10 (TS8GSDHC10) ||4.6 ||4.6 ||Debian Squeeze "debian6-19-04-2012" ||Linux raspberrypi 3.1.9+ armv61 GNU/Linux ||
 
|-
 
|Transcend SDHC 8GB Class 10 (TS8GSDHC10) ||19.5 ||18.5 ||Debian Wheezy "Rasbpian" ||Linux raspberrypi 3.1.9+ #168 PREEMPT Tue Aug 7 22:51:44 BST 2012 armv6l GNU/Linux ||
 
|-
 
|Transcend microSDHC 8GB Kit, Class 4 (TS8GUSDHC4)||4.7 ||3.7 ||Raspbian Wheezy || Linux raspberry-pi 3.1.9+ #1 PREEMPT Wed Jun 6 16:26:14 CEST 2012 armv6l GNU/Linux || man:0x000003 oem:0x5344 name:SU08G hwrev:0x8 fwrev:0x0
 
|-
 
|Transcend SDHC 4GB Class 6 ||9.8 ||8.8 ||Fedora Remix FC14 ||Linux raspi 3.1.9 #1 PREEMPT Sat Mar 3 21:58:00 UTC 2012 armv6l armv6l armv6l GNU/Linux ||Not sure why this setup is faster than others, test results repeatable.
 
|-
 
|Transcend SDHC 16GB Class 10 ||20.3 ||11.9 ||Debian Wheezy "Rasbpian" || Linux raspberry-pi 3.1.9-cutdown+ #173 ||
 
|-
 
|Transcend SDHC 32GB Class 10 (TS32GSDHC10E) || 20.3 || 15.3 || Debian Wheezy "Rasbpian" || Linux raspberrypi 3.1.9+ #242 PREEMPT Wed Aug 1 19:47:22 BST 2012 armv6l GNU/Linux || man:0x000074 oem:0x4a45 name:SDC  hwrev:0x1 fwrev:0x0
 
|-
 
|Sandisk Extreme Pro SDHC 16GB Class 10 UHS-I (SDSDXPA-016G-A75) ||4.7 ||4.8 ||debian6-19-04-2012 ||Linux Raspi 3.1.9+ #66 Thu May 17 16:56:20 BST 2012  || Followed [http://www.element14.com/community/message/51493?tstart=0#51493 a forum post] to install newest kernel from git repo.
 
|-
 
|SanDisk Extreme Pro SDHC 16GB Class 10||20.8||18.6||Debian Wheezy "Raspbian"||Linux raspberrypi 3.1.9+ #125 PREEMPT Sun Jun 17 16:09:36 BST 2012 armv6l GNU/Linux||
 
|-
 
|Sandisk Ultra SDHC I Class 6 ("30MB/s") ||4.7 ||4.8 ||Debian Wheezy "Raspbian" ||3.2.18+ #3 PREEMPT ||Feels faster than my Kingston 4GB Class 4 card.
 
|-
 
| Sony 8GB SDHC Class 4 || 17.4 || 11.8 || Debian Wheezy Raspbian || Linux 3.1.9+ #272 PREEMPT Tue Aug 7 22:51:44 BST 2012 ||
 
|-
 
|WINTEC FileMate Professional SDHC 16GB Class 10 (3FMSD16GBC10-R) ||4.6 ||4.5 ||Debian Squeeze "debian6-19-04-2012" ||Linux raspberrypi 3.1.9+ #95  PREEMPT Thu May 31 13:21:40 BST 2012 armv6l GNU/Linux ||After installing new kernel with rpi-update on 2012-06-01
 
|-
 
|Lexar SDHC 8GB Class 4 "Multi-use" ||18.9 ||6.8 ||Debian Wheezy "Raspbian" ||3.1.9+ #110 PREEMPT ||
 
|-
 
|Lexar SDHC 8GB Class 6 "PLATINUM II" ||19.7 ||10.1 ||Debian Wheezy "Raspbian" || 3.1.9+ #168 PREEMPT ||
 
|-
 
|Lexar SDHC 16GB Class 10 "PLATINUM II" ||5.3 ||4.8 ||Debian Wheezy/sid || Linux raspberrypi 3.2.19-rpi1+ #3 ||
 
|-
 
|Lexar SDHC 16GB Class 10 "PLATINUM II" ||18.9 ||9.0 ||Debian Wheezy "Raspbian" || Linux raspbian 3.1.9+ #168 PREEMPT || Same card as 'Lexar SDHC 16GB Class 10 "PLATINUM II"' above - imaged with Raspbian
 
|-
 
|Mushkin SDHC 16GB Class 10 MKNSDHCC10-16GB ||19.7 ||10.9 ||2012-07-15-wheezy-raspbian ||3.1.9+ #168 PREEMPT ||
 
|-
 
|PNY SDHC 8GB Class 6 Limited Edition ||7.4 ||13.2 ||Debian Wheezy "Rasbpian" ||Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux ||
 
|-
 
|SanDisk MicroSDHC 4GB ||5.1 ||11.4 ||Debian Wheezy "Rasbpian" ||Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux ||
 
|-
 
|SanDisk UHS-I C10 Ultra SDHC 8GB (SDSDU-008G-U46)||19.1 ||20.8 ||Debian Wheezy "Rasbpian" ||Linux raspberrypi 3.1.9+ #272 PREEMPT Tue Aug 7 22:51:44 BST 2012 armv6l GNU/Linux ||
 
|-
 
|Panasonic SDHC 4GB Class 10 UHS-I ||11.2 ||6.2 ||Debian Wheezy "Raspbian" ||3.1.9+ #144 PREEMPT || Panasonic RP-SDU04GE1K
 
|}
 
  
 
==NIC==
 
==NIC==
Line 491: Line 333:
 
|5.1%us, 66.2%sy, 28.7%si
 
|5.1%us, 66.2%sy, 28.7%si
 
|Debian Squeeze "debian6-19-04-2012"
 
|Debian Squeeze "debian6-19-04-2012"
|Linux raspberrypi 3.1.9+ #95 PREEMPT
+
|Linux Raspberry Pi 3.1.9+ #95 PREEMPT
 
|
 
|
 
|-
 
|-
Line 497: Line 339:
 
|1.6%us, 60.8%sy, 37.5%si
 
|1.6%us, 60.8%sy, 37.5%si
 
|Debian Wheezy "Raspbian"
 
|Debian Wheezy "Raspbian"
|Linux raspbian 3.1.9+ #101 PREEMPT
+
|Linux Raspbian 3.1.9+ #101 PREEMPT
 
|
 
|
 
|-
 
|-
Line 519: Line 361:
 
|}
 
|}
  
===Additional Observations===
 
  
Using netperf -H [netserver host IP] with Debian Wheezy and changing the CPU clock rate, the TCP performance increased linearly from 61 Mb/s at 500 MHz to 80.6 Mb/s at 900 MHz.
+
==Routing==
  
Performance seems to improve considerably by dropping MTU from the default 1500 to 1488. However, this has caused kernel instabilities with Debian Squeeze images (debian6-19-04-2012). It is unknown if this performance benefit is also gained on other images, or if these kernel instabilities have been resolved.
+
===Methodology===
 +
*OpenBSD 5.2 computer with two VLAN interfaces in differents rdomains directly connected to Raspberry Pi with two VLAN interfaces.
 +
*iperf -s on one interface of the OpenBSD, iperf -t 300 -c on the other, Raspberry Pi routing in the middle.
 +
*iperf v2.0.5.
 +
*System load on the Raspberry Pi after 150 seconds testing.
 +
 
 +
===Results===
 +
{| border="1"
 +
! Bandwidth (Mbit/s)
 +
! CPU usage (top)
 +
! Distro
 +
! Kernel
 +
! Notes
 +
|-
 +
|50.2 Mbit/s
 +
|0.0%us, 0.1%sy, 99.8%si
 +
|Debian Wheezy "Raspbian"
 +
|Linux Raspberry Pi 3.6.11+ #366 PREEMPT
 +
|Stock clock
 +
|-
 +
|85.5 Mbit/s
 +
|0.0%us, 2.8%sy, 69.7%si
 +
|Debian Wheezy "Raspbian"
 +
|Linux Raspberry Pi 3.6.11+ #366 PREEMPT
 +
|Overclocked via raspi_config "turbo"
 +
|-
 +
|87.1 Mbit/s
 +
|4.3%us, 4.3%sy, 52.1%si
 +
|Debian Wheezy "Raspbian"
 +
|Linux Raspberry Pi 3.6.11+ #366 PREEMPT
 +
|Overclocked arm_freq 1100 core_freq 500 sdram_freq 600 over_voltage 6
 +
|-
 +
|62.1 Mbit/s
 +
|0.0%us, 0.1%sy, 99.2%si
 +
|Debian Wheezy "Raspbian"
 +
|Linux Raspberry Pi 3.6.11+ #366 PREEMPT
 +
|Overclocked arm_freq 1100 core_freq 500 sdram_freq 600 over_voltage 6 - SNAT enabled
 +
|}
  
 
=Power=
 
=Power=
Line 542: Line 420:
 
| Text editing || - || Same as idling
 
| Text editing || - || Same as idling
 
|-
 
|-
| Compiling C code || ? ||
+
| Compiling C code (QuakeIII) || 364 || Measured with a Fluke 87V multimeter. No composite, keyboard, mouse, or network connected. HDMI was connected. Current peaked at 418mA.
 
|-
 
|-
 
| Running a Python program || ? ||
 
| Running a Python program || ? ||
 
|-
 
|-
| Playing Quake III || ? ||
+
| Playing Quake III || 461 || Measured with a Fluke 87V multimeter. No composite or network connected. HDMI was connected. Current peaks at 551mA.
 
|}
 
|}
  

Latest revision as of 14:41, 23 August 2013

Back to the Hub.


Software & Distributions:

Software - an overview.

Distributions - operating systems and development environments for the Raspberry Pi.

Kernel Compilation - advice on compiling a kernel.

Performance - measures of the Raspberry Pi's performance.

Programming - programming languages that might be used on the Raspberry Pi.


CPU

LINPACK

The ARM has been tested using the LINPACK benchmark from [1], built with gcc with -O3 (Optimisation level 3). Run with array size 200.

With software floating point

Source

[2]

Compile/Run

cc -O3 -o linpack linpack.c -lm
  linpack.c: In function ‘main’:
  linpack.c:69: warning: return type of ‘main’ is not ‘int’
./linpack
  Enter array size (q to quit) [200]: 200


Results

Crippled

Memory required:  315K.

LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
       2   0.53  92.45%   1.89%   5.66%   5493.333
       4   1.07  92.52%   2.80%   4.67%   5385.621
       8   2.12  92.45%   2.36%   5.19%   5466.003
      16   4.24  92.45%   2.83%   4.72%   5438.944
      32   8.49  92.11%   2.71%   5.18%   5459.213
      64  16.98  92.05%   2.89%   5.06%   5452.440

Hardware floating point (-mfloat-abi=softfp)

Memory required:  315K.
LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
       8   0.51  90.20%   3.92%   5.88%  22888.889
      16   1.02  89.22%   4.90%   5.88%  22888.889
      32   2.05  90.24%   3.41%   6.34%  22888.889
      64   4.08  91.42%   2.94%   5.64%  22829.437
     128   8.16  91.54%   2.94%   5.51%  22799.827
     256  16.31  91.35%   2.76%   5.89%  22903.800

Full hardware floating point on Raspbian (-mfloat-abi=hard -mfpu=vfp) and arm_freq=700

Memory required:  315K.
LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
      16   0.58  89.66%   3.45%   6.90%  40691.358
      32   1.17  87.18%   4.27%   8.55%  41071.651
      64   2.32  88.36%   3.02%   8.62%  41459.119
     128   4.67  88.22%   3.43%   8.35%  41071.651
     256   9.33  88.85%   3.32%   7.82%  40880.620
     512  18.63  89.00%   2.95%   8.05%  41047.675

Full hardware floating point on Raspbian (-mfloat-abi=hard -mfpu=vfp) and arm_freq=1000 and core_freq=500

Memory required:  315K.
LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
      32   0.79  89.87%   0.00%  10.13%  61896.714
      64   1.58  89.24%   1.27%   9.49%  61463.869
     128   3.16  90.19%   1.90%   7.91%  60407.789
     256   6.32  88.13%   3.80%   8.07%  60511.761
     512  12.65  87.83%   3.56%   8.62%  60825.836

Full hardware floating point on Gentoo with more compiler optimizations (gcc-4.6.3 -Ofast -fno-fast-math), default clocks

Memory required:  315K.
LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

    Reps Time(s) DGEFA   DGESL  OVERHEAD    KFLOPS
----------------------------------------------------
      16   0.56  89.29%   1.79%   8.93%  43084.967
      32   1.13  91.15%   4.42%   4.42%  40691.358
      64   2.25  89.78%   3.56%   6.67%  41853.968
     128   4.51  87.80%   4.21%   7.98%  42358.233
     256   9.01  88.68%   3.88%   7.44%  42155.076
     512  18.01  89.23%   2.78%   8.00%  42434.923

Whetstone/Dhrystone

All code compiled with gcc options -float-abi=softfp -O3

Source

Code for these tests can be found here http://www.rowley.co.uk/arm/whet_dhry.zip. Or if 404 this code might be analogous http://freespace.virgin.net/roy.longbottom/benchnt.zip


Compile/Run

?


Results

Dhrystone

Microseconds for one run through Dhrystone: 1.2

Dhrystones per Second: 809061.5 


Whetstone Crippled

Loops: 1000, Iterations: 10, Duration: 24 sec.

C Converted Double Precision Whetstones: 41.7 MIPS

Rebuilding the Whetstone test code with 'gcc -mfpu -float-abi=softfp' gives better results:


Loops: 1000, Iterations: 100, Duration: 106 sec.
C Converted Double Precision Whetstones: 94.3 MIPS

However, the majority of compute time is spent in the SQRT function, which for the above test was built without -mfpu=vfp. Using a library with vfp give the following much improved result:

Loops: 1000, Iterations: 100, Duration: 15 sec.
C Converted Double Precision Whetstones: 666.7 MIPS

OpenSSL

Source

[3]

Compile/Run

openssl version;
openssl speed;

Results

Assembly optimization disabled:

OpenSSL 0.9.8o 01 Jun 2010
built on: Thu Aug 26 18:56:26 UTC 2010
options:bn(64,32) md2(int) rc4(ptr,int) des(idx,risc1,4,long) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O2 -Wa,--noexecstack -g -Wall
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                148.81k      372.18k      624.81k      769.95k      832.90k
mdc2                 0.00         0.00         0.00         0.00         0.00
md4                615.30k     2468.76k     7612.19k    16707.01k    28104.86k
md5                380.13k     1501.12k     4800.77k    11312.81k    21682.77k
hmac(md5)         1022.28k     3480.23k     9587.80k    17492.25k    25441.78k
sha1               303.72k     1092.39k     3106.50k     6302.57k     9852.39k
rmd160             244.29k      849.04k     2414.53k     4747.26k     7513.00k
rc4              14658.70k    16836.49k    17462.03k    17628.21k    17522.08k
des cbc           2913.17k     3221.30k     3289.77k     3360.09k     3367.21k
des ede3          1149.87k     1188.59k     1198.46k     1206.00k     1208.25k
idea cbc             0.00         0.00         0.00         0.00         0.00
seed cbc             0.00         0.00         0.00         0.00         0.00
rc2 cbc           2812.71k     3012.02k     3054.19k     3077.82k     3076.12k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00
blowfish cbc      6091.32k     7007.89k     7250.62k     7288.21k     7163.88k
cast cbc          5068.25k     6020.03k     6345.71k     6367.64k     6260.44k
aes-128 cbc       3205.76k     3497.72k     3616.00k     3652.49k     3665.85k
aes-192 cbc       2730.65k     2981.88k     3073.20k     3102.38k     3111.86k
aes-256 cbc       2383.90k     2596.12k     2659.91k     2702.13k     2732.50k
camellia-128 cbc     0.00         0.00         0.00         0.00         0.00
camellia-192 cbc     0.00         0.00         0.00         0.00         0.00
camellia-256 cbc     0.00         0.00         0.00         0.00         0.00
sha256             679.98k     1629.47k     2905.43k     3708.32k     4175.45k
sha512              41.02k      163.83k      232.63k      318.20k      353.81k
aes-128 ige       3089.03k     3579.08k     3698.68k     3689.14k     3578.18k
aes-192 ige       2641.68k     3019.45k     3111.38k     3144.95k     3035.70k
aes-256 ige       2334.50k     2632.35k     2705.04k     2735.69k     2687.74k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.013747s 0.001193s     72.7    838.4
rsa 1024 bits 0.063481s 0.002742s     15.8    364.7
rsa 2048 bits 0.321250s 0.007378s      3.1    135.5
rsa 4096 bits 1.805000s 0.022528s      0.6     44.4
                  sign    verify    sign/s verify/s
dsa  512 bits 0.011690s 0.013597s     85.5     73.5
dsa 1024 bits 0.027233s 0.031683s     36.7     31.6
dsa 2048 bits 0.073897s 0.087304s     13.5     11.5

Assembly optimization enabled:

OpenSSL 1.0.1c 10 May 2012
built on: Sun Jul 29 00:43:16 CEST 2012
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) idea(int) blowfish(ptr)
compiler: armv6j-hardfloat-linux-gnueabi-gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN \
-DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM \
-DSHA512_ASM -DAES_ASM -DGHASH_ASM -O2 -march=armv6j -mfpu=vfp -mfloat-abi=hard -fno-strict-aliasing -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2                  0.00         0.00         0.00         0.00         0.00
mdc2               724.41k      933.06k     1024.68k     1063.59k     1075.88k
md4               2547.83k     9441.28k    27284.48k    51824.98k    69894.14k
md5               1954.05k     7217.96k    20805.95k    39365.29k    53226.15k
hmac(md5)         3075.61k    10241.88k    26669.65k    44729.00k    55386.11k
sha1              2115.34k     6823.83k    16264.45k    25053.18k    30121.35k
rmd160            1487.88k     4783.96k    10707.71k    15800.32k    19303.08k
rc4              34205.43k    39535.98k    41215.83k    41561.43k    41570.04k
des cbc           6251.12k     6605.08k     6686.81k     6713.01k     6707.54k
des ede3          2326.45k     2368.36k     2385.83k     2397.53k     2391.84k
idea cbc          8758.77k     9421.31k     9607.34k     9653.93k     9687.93k
seed cbc          8274.52k     9036.46k     9264.64k     9321.47k     9284.27k
rc2 cbc           6047.90k     6354.82k     6458.82k     6465.19k     6485.33k
rc5-32/12 cbc    16204.47k    18649.32k    19367.94k    19560.11k    19649.84k
blowfish cbc     11934.03k    13189.85k    13546.92k    13633.19k    13486.76k
cast cbc         10797.59k    11828.46k    12156.58k    12187.65k    12050.43k
aes-128 cbc      12978.72k    14708.69k    15387.40k    15472.93k    15529.06k
aes-192 cbc      11441.49k    12834.60k    13315.69k    13453.78k    13430.80k
aes-256 cbc      10267.01k    11409.83k    11744.41k    11812.86k    11859.64k
camellia-128 cbc     9312.98k    10278.89k    10572.46k    10646.19k    10657.82k
camellia-192 cbc     7541.38k     8140.71k     8325.63k     8370.18k     8361.30k
camellia-256 cbc     7513.97k     8138.65k     8297.98k     8351.40k     8347.65k
sha256            3598.03k     8377.26k    14605.57k    17979.39k    19300.35k
sha512            1080.74k     4322.82k     6151.85k     8416.32k     9418.07k
whirlpool          361.82k      729.24k     1186.42k     1425.38k     1512.79k
aes-128 ige      11702.57k    13853.45k    14429.53k    14671.38k    14057.47k
aes-192 ige      10468.67k    12165.24k    12628.24k    12743.72k    12331.69k
aes-256 ige       9505.78k    10831.25k    11205.36k    11333.43k    10982.74k
ghash            15681.70k    17279.32k    17770.84k    17894.06k    17940.48k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.002185s 0.000217s    457.6   4611.1
rsa 1024 bits 0.011325s 0.000640s     88.3   1563.5
rsa 2048 bits 0.074296s 0.002289s     13.5    436.8
rsa 4096 bits 0.544211s 0.008741s      1.8    114.4
                  sign    verify    sign/s verify/s
dsa  512 bits 0.002157s 0.002262s    463.5    442.0
dsa 1024 bits 0.006234s 0.007123s    160.4    140.4
dsa 2048 bits 0.022247s 0.025884s     44.9     38.6

GPU

The Raspberry Pi appears to handle H.264 1080p movie from USB to HDMI at least 4 MB/s.

The Admin "JamesH" said it would handle "basically 1080p30, high profile, >40 Mbit/s." (5 MB/s) in H.264.

And about WVGA(480p30) or 720p20 in VP8/WEBM.

ioquake3

Source

https://github.com/raspberrypi/quake3

Compile/Run

- Download source, compile as delivered
- Start game
- Runs at display's native resolution, in my case 1280x1024
- Bitdepth stuck at 16 bpp, not sure how to change, values in q3config.cfg seem to be ignored
- In-game console commands:
\timedemo 1
\demo four

Results

armel "driver info" : http://i.imgur.com/wtYhB.jpg
armel timedemo score: http://i.imgur.com/i2TkN.jpg
20.2fps
armhf "driver info" : http://i.imgur.com/8nqa1.jpg
armhf timedemo score: http://i.imgur.com/dUu0g.jpg
28.5fps

I/O

USB bus

  • All I/O uses the same bus so the combination of all I/O can not exceed the bus speed of an as yet hypothetical 60 MB/s
  • A test with a fast USB-Stick showed that Raspberry Pi can achieve about 30 MB/s:
root@raspberrypi:~# dd if=/dev/sda of=/dev/null bs=32M count=10 iflag=direct
10+0 records in
10+0 records out
335544320 bytes (336 MB) copied, 10.6428 s, 31.5 MB/s

SD card

This section has been moved to RPi_SD_cards#Performance

NIC

Compile/Run

On LAN server:

iperf -s

On Raspberry Pi:

iperf -t 60 -c <SERVER_IP_ADDRESS> -d

Results

Bandwidth (Mbit/s) CPU usage (top) Distro Kernel Notes
52.1 + 46.4 5.1%us, 66.2%sy, 28.7%si Debian Squeeze "debian6-19-04-2012" Linux Raspberry Pi 3.1.9+ #95 PREEMPT
91.8 + 36.8 1.6%us, 60.8%sy, 37.5%si Debian Wheezy "Raspbian" Linux Raspbian 3.1.9+ #101 PREEMPT
65.1 + 48.8 1.3%us, 61.9%sy, 36.8%si Arch Linux 2012-04-29 Linux alarmpi 3.1.9-12+ #5 Sat Apr 28 04:49:38 UTC 2012 armv6l ARMv6-compatible processor rev 7 (v6l) BCM2708 GNU/Linux Remote host connected at gigabit
69.5 + 29.1 0.6%us, 55.5%sy, 40.0%si Debian Wheezy "Raspbian" Linux rpi 3.1.9+ #168 PREEMPT Remote connected at gigabit, values for si between 30 and 55 %
90.8 + 91.4 0.3%us, 62.2%sy, 37.5%si Gentoo Linux ARM Linux genpi 3.2.23-bootc #1 Remote host connected at gigabit, vm.min_free_kbytes = 4096


Routing

Methodology

  • OpenBSD 5.2 computer with two VLAN interfaces in differents rdomains directly connected to Raspberry Pi with two VLAN interfaces.
  • iperf -s on one interface of the OpenBSD, iperf -t 300 -c on the other, Raspberry Pi routing in the middle.
  • iperf v2.0.5.
  • System load on the Raspberry Pi after 150 seconds testing.

Results

Bandwidth (Mbit/s) CPU usage (top) Distro Kernel Notes
50.2 Mbit/s 0.0%us, 0.1%sy, 99.8%si Debian Wheezy "Raspbian" Linux Raspberry Pi 3.6.11+ #366 PREEMPT Stock clock
85.5 Mbit/s 0.0%us, 2.8%sy, 69.7%si Debian Wheezy "Raspbian" Linux Raspberry Pi 3.6.11+ #366 PREEMPT Overclocked via raspi_config "turbo"
87.1 Mbit/s 4.3%us, 4.3%sy, 52.1%si Debian Wheezy "Raspbian" Linux Raspberry Pi 3.6.11+ #366 PREEMPT Overclocked arm_freq 1100 core_freq 500 sdram_freq 600 over_voltage 6
62.1 Mbit/s 0.0%us, 0.1%sy, 99.2%si Debian Wheezy "Raspbian" Linux Raspberry Pi 3.6.11+ #366 PREEMPT Overclocked arm_freq 1100 core_freq 500 sdram_freq 600 over_voltage 6 - SNAT enabled

Power

This table lists how much power is drawn over the 5V power cable whilst performing various tasks.

Task Power use (mA) Notes
Booting (without peripherals) 120-400 Taken from Agilent lab power supply readings. No composite/keyboard/mouse/network connected. HDMI was enabled but the cable was disconnected.
Idling (HDMI on, network on) 370 Taken from Agilent lab power supply readings. No composite/keyboard/mouse connected.
Idling (HDMI on, network off) 320 Taken from Agilent lab power supply readings. No composite/keyboard/mouse/network connected.
1080p video playback 750 About 3h on 4 AA batteries
Text editing - Same as idling
Compiling C code (QuakeIII) 364 Measured with a Fluke 87V multimeter. No composite, keyboard, mouse, or network connected. HDMI was connected. Current peaked at 418mA.
Running a Python program ?
Playing Quake III 461 Measured with a Fluke 87V multimeter. No composite or network connected. HDMI was connected. Current peaks at 551mA.

References