Und die Bauteile werden alle mollig warm ☺
Raspberry Pi4 - USB3
-
Ich hatte ja vor ein paar Tagen mal folgenden Test gemacht. ROCKPro64 - USB3
Dann machen wir das mal auf dem RPi4. Ok, das System (Debian Buster Desktop) liegt auf einer SD-Karte, die Daten werden auf den USB3.1 Stick geschrieben. Somit haben wir Stress auf der LAN-Schnittstelle und viele Daten auf dem USB3-Port.
Linux raspberrypi 4.19.50-v7l+ #895 SMP Thu Jun 20 16:03:42 BST 2019 armv7l
Zur Erinnerung das Ergebnis vom ROCKPro64
rock64@rp64v_2_1_NAS:~$ scp -r root@192.168.3.243:/mnt/nas/Videos/"Star_Wars" /home/rock64/ root@192.168.3.243's password: Star_Wars_I.ts 100% 6753MB 83.7MB/s 01:20 Star_Wars_IV.ts 100% 7668MB 83.5MB/s 01:31 Star_Wars_VI.ts 100% 7871MB 83.4MB/s 01:34 Star_Wars_V.ts 100% 7409MB 83.3MB/s 01:28 Star_Wars_III.ts 100% 7169MB 83.0MB/s 01:26 Star_Wars_II.ts 100% 6268MB 83.3MB/s 01:15
Und hier das Ergebnis vom RPi4
root@192.168.3.243's password: Star_Wars_I.ts 100% 6753MB 42.0MB/s 02:40 Star_Wars_IV.ts 100% 7668MB 41.5MB/s 03:04 Star_Wars_VI.ts 100% 7871MB 40.3MB/s 03:15 Star_Wars_V.ts 100% 7409MB 39.2MB/s 03:09 Star_Wars_III.ts 100% 7169MB 37.8MB/s 03:09 Star_Wars_II.ts 100% 6268MB 38.1MB/s 02:44
Auf dem RPI4 taucht auf dem Bildschirm immer dieses Thermometer auf. Der RPI4 dürfte also ganz schon ins Schwitzen kommen und wird deshalb auch runter takten. Ein gut funktionierendes NAS sieht für mich anders aus
Aber, wir sind hier softwaremäßig mit Sicherheit noch am Anfang, da wird noch mehr passieren. Aber bei einem bin ich mir jetzt schon ziemlich sicher, das Ding muss vernünftig gekühlt werden. Auf der Platine wird alles ziemlich heftig warm.
Die kopierten Videos laufen einwandfrei bei ca. 6,5 Watt Stromverbrauch.
-
Mit einer Samsung T5 500GB bekomme ich folgendes Ergebnis
pi@raspberrypi:/mnt $ sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync 4096+0 Datensätze ein 4096+0 Datensätze aus 4294967296 bytes (4,3 GB, 4,0 GiB) copied, 19,872 s, 216 MB/s
Zum Vergleich, auf einem ROCKPro64
rock64@rockpro64:/mnt$ sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB, 4.0 GiB) copied, 11.8257 s, 363 MB/s
Da fehlt aber noch ein wenig!?
-
Um die Perfomance von USB-Laufwerken zu testen, nutzt man iozone. Das läßt sich aber unter dem Raspbian nicht installieren. Paket nicht vorhanden
Hier auf der Webseite wird erklärt, wie man das selber baut. Aber da sind ein paar Typos drin.
File runterladen
pi@raspberrypi:~ $ wget http://www.iozone.org/src/current/iozone3_487.tar --2019-06-30 08:57:41-- http://www.iozone.org/src/current/iozone3_487.tar Auflösen des Hostnamens www.iozone.org (www.iozone.org)… 208.45.140.198 Verbindungsaufbau zu www.iozone.org (www.iozone.org)|208.45.140.198|:80 … verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK Länge: 1873920 (1,8M) [application/x-tar] Wird in »iozone3_487.tar« gespeichert. iozone3_487.tar 100%[====================================>] 1,79M 1,02MB/s in 1,8s 2019-06-30 08:57:48 (1,02 MB/s) - »iozone3_487.tar« gespeichert [1873920/1873920]
File auspacken
pi@raspberrypi:~ $ tar xvf iozone3_487.tar iozone3_487/src/current/Changes.txt iozone3_487/src/current/iozone.c iozone3_487/src/current/report.pl iozone3_487/src/current/fileop.c iozone3_487/src/current/pit_server.c iozone3_487/docs/iozone.1 iozone3_487/src/current/Android.mk iozone3_487/src/current/Android_Readme.md iozone3_487/src/current/Application.mk iozone3_487/src/current/makefile iozone3_487/src/current/libasync.c iozone3_487/src/current/libbif.c iozone3_487/src/current/gnuplot.dem iozone3_487/src/current/gengnuplot.sh iozone3_487/src/current/Generate_Graphs iozone3_487/src/current/iozone_visualizer.pl iozone3_487/src/current/gnu3d.dem iozone3_487/src/current/Gnuplot.txt iozone3_487/src/current/gnuplotps.dem iozone3_487/src/current/read_telemetry iozone3_487/src/current/write_telemetry iozone3_487/src/current/client_list iozone3_487/src/current/spec.in iozone3_487/docs/IOzone_msword_98.pdf iozone3_487/docs/Run_rules.doc iozone3_487/docs/IOzone_msword_98.doc iozone3_487/docs/Iozone_ps.gz
iozone bauen
pi@raspberrypi:~ $ cd iozone3_487/src/current/ pi@raspberrypi:~/iozone3_487/src/current $ make -j4 linux-arm cc -c -o libbif.o libbif.c cc -c -o libasync.o libasync.c Building iozone for Linux-arm Building fileop for Linux-arm cc -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -DHAVE_PREAD \ -DNAME='"linux-arm"' -DLINUX_ARM -DSHARED_MEM \ -Dlinux -D_LARGEFILE64_SOURCE iozone.c \ -o iozone_linux-arm.o gcc -Wall -c -O3 fileop.c -o fileop_linux-arm.o libbif.c:205:1: warning: return type defaults to ‘int’ [-Wimplicit-int] create_xls(name) ^~~~~~~~~~ libbif.c:230:1: warning: return type defaults to ‘int’ [-Wimplicit-int] do_header(fd) ^~~~~~~~~ libbif.c:230:1: warning: conflicting types for ‘do_header’ libbif.c:172:6: note: previous declaration of ‘do_header’ was here void do_header(); ^~~~~~~~~ libbif.c:254:1: warning: return type defaults to ‘int’ [-Wimplicit-int] do_int(fd,val,row,column) ^~~~~~ libbif.c:254:1: warning: conflicting types for ‘do_int’ libbif.c:173:6: note: previous declaration of ‘do_int’ was here void do_int(); ^~~~~~ libbif.c:290:1: warning: return type defaults to ‘int’ [-Wimplicit-int] do_float(fd, value, row, column) ^~~~~~~~ libbif.c:290:1: warning: conflicting types for ‘do_float’ libbif.c:174:6: note: previous declaration of ‘do_float’ was here void do_float(); ^~~~~~~~ libbif.c:373:1: warning: return type defaults to ‘int’ [-Wimplicit-int] do_label(fd, string, row, column) ^~~~~~~~ libbif.c:373:1: warning: conflicting types for ‘do_label’ libbif.c:175:6: note: previous declaration of ‘do_label’ was here void do_label(); ^~~~~~~~ libbif.c:416:1: warning: return type defaults to ‘int’ [-Wimplicit-int] do_eof(fd) ^~~~~~ libbif.c:416:1: warning: conflicting types for ‘do_eof’ libbif.c:176:6: note: previous declaration of ‘do_eof’ was here void do_eof(); ^~~~~~ libasync.c: In function ‘end_async’: libasync.c:299:2: warning: implicit declaration of function ‘del_cache’; did you mean ‘incache’? [-Wimplicit-function-declaration] del_cache(gc); ^~~~~~~~~ incache libasync.c: In function ‘async_read’: libasync.c:427:3: warning: implicit declaration of function ‘takeoff_cache’; did you mean ‘alloc_cache’? [-Wimplicit-function-declaration] takeoff_cache(gc,ce); ^~~~~~~~~~~~~ alloc_cache libasync.c: At top level: libasync.c:603:1: warning: conflicting types for ‘takeoff_cache’ takeoff_cache(struct cache *gc, struct cache_ent *ce) ^~~~~~~~~~~~~ libasync.c:427:3: note: previous implicit declaration of ‘takeoff_cache’ was here takeoff_cache(gc,ce); ^~~~~~~~~~~~~ libasync.c:677:1: warning: conflicting types for ‘del_cache’ del_cache(gc) ^~~~~~~~~ libasync.c:299:2: note: previous implicit declaration of ‘del_cache’ was here del_cache(gc); ^~~~~~~~~ libasync.c: In function ‘async_read_no_copy’: libasync.c:765:3: warning: implicit declaration of function ‘putoninuse’ [-Wimplicit-function-declaration] putoninuse(gc,ce); ^~~~~~~~~~ libasync.c: In function ‘async_release’: libasync.c:870:2: warning: implicit declaration of function ‘takeoffinuse’; did you mean ‘takeoff_cache’? [-Wimplicit-function-declaration] takeoffinuse(gc); ^~~~~~~~~~~~ takeoff_cache libasync.c: At top level: libasync.c:884:1: warning: conflicting types for ‘putoninuse’ putoninuse(gc,entry) ^~~~~~~~~~ libasync.c:765:3: note: previous implicit declaration of ‘putoninuse’ was here putoninuse(gc,ce); ^~~~~~~~~~ libasync.c:905:1: warning: conflicting types for ‘takeoffinuse’ takeoffinuse(gc) ^~~~~~~~~~~~ libasync.c:870:2: note: previous implicit declaration of ‘takeoffinuse’ was here takeoffinuse(gc); ^~~~~~~~~~~~ Building the pit_server cc -c pit_server.c -o pit_server.o cc -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -D_LARGEFILE64_SOURCE \ -DSHARED_MEM -Dlinux libbif.c -o libbif.o cc -c -O3 -Dunix -Dlinux -DHAVE_ANSIC_C -DASYNC_IO \ -D_LARGEFILE64_SOURCE libasync.c -o libasync.o cc -O3 iozone_linux-arm.o libbif.o libasync.o \ -lrt -lpthread -o iozone cc -O3 -Dlinux fileop_linux-arm.o -o fileop cc -O3 -Dlinux pit_server.o -o pit_server
iozone kopieren
sudo cp iozone /usr/local/bin
Test meiner Samsung T5 mit 500GB
pi@raspberrypi:~ $ iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 Iozone: Performance Test of File I/O Version $Revision: 3.487 $ Compiled for 32 bit mode. Build: linux-arm Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins Al Slater, Scott Rhine, Mike Wisner, Ken Goss Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR, Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner, Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone, Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root, Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer, Vangel Bojaxhi, Ben England, Vikentsi Lapa, Alexey Skidanov, Sudhir Kumar. Run began: Sun Jun 30 09:02:03 2019 Include fsync in write timing O_DIRECT feature enabled Auto Mode File size set to 102400 kB Record Size 4 kB Record Size 16 kB Record Size 512 kB Record Size 1024 kB Record Size 16384 kB Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 Output is in kBytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 kBytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size. random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 26845 34021 33388 33303 18822 33148 102400 16 84330 102525 86757 89905 58202 96487 102400 512 201247 155920 144046 144036 141239 149121 102400 1024 232917 243315 239391 267603 242457 248111 102400 16384 200792 199172 146421 131353 133374 203319 iozone test complete.
Das Ergebnis ist immer noch bescheiden.
-
Zu iozone: https://www.cnx-software.com/2019/06/24/raspberry-pi-4-benchmarks-mini-review/#comment-563977
Weiter unten steht dann auch, was am Anfang bzgl. Storage möglich war. Das ist mit dem Update für den VIA Host-Controller dann den Bach hinuntergegangen, dafür überhitzte das Ding dann nicht mehr so stark.
Man kann das Update rückgängig machen aber Raspbian will dann dauernd den Controller erneut auf die lahme Version flachen. Und wenn man das Ganze schön performant als NAS haben will, muß man sich noch um IRQ Affinity kümmern, wie ich das bis letztes Jahr noch bei Armbian für jedes Board gemacht habe (also PCIe- und Ethernet-IRQs auf eine andere CPU als cpu0 legen).