Raspberry Pi 4 Model B入手

メモリ4GBの大幅増量&最新CPUで、とうとうRaspberry Pi4 Model Bが海外で発売開始しました。早速入手したので、レビューしたいと思います。

何が大きく変わったのか?

  • 最新CPUであるCortex-A72を搭載
  • メモリが最大4GB(1GB、2GB、4GBの3モデルラインナップ)
  • Wi-FiはIEEE 802.11b/g/n/ac
  • Bluetooth 5
  • USB 3.0ポート2基 (残りの2基がUSB 2.0)
  • micro HDMIポート2基
  • 電源ポートはUSB Type-C
  • Broadcom VideoCore VI 500MHz

注意点としては、ほぼサイズは同じだが、前モデルまでのケースと互換性がないとのこと。あと、HDMIポートがmicroポートに変更になっているので、すでに持っているであろうケーブルが使えないので別途変換アダプタやケーブルを追加購入する必要があるのはちょっと微妙。。2基もいるんですかねぇ。

あと、Raspbianが4の発売に合わせて、新しいバージョンであるBusterがリリースされている。かなり混みあっているのか、なかなかダウンロードできないので入手前にダウンロードしておいたほうが良い。
https://www.raspberrypi.org/downloads/raspbian/

https://www.raspberrypi.org/documentation/configuration/config-txt/overclocking.md

https://www.jackenhack.com/raspberry-pi-3-overclocking/

ハードウェア情報

オーバークロックなしのデフォルト状態。

>  vcgencmd get_config int
arm_freq=1500
audio_pwm_mode=514
config_hdmi_boost=5
core_freq=500
core_freq_min=250
disable_commandline_tags=2
disable_l2cache=1
display_hdmi_rotate=-1
display_lcd_rotate=-1
enable_gic=1
enable_uart=1
force_eeprom_read=1
force_pwm_open=1
framebuffer_depth=16
framebuffer_ignore_alpha=1
framebuffer_swap=1
gpu_freq=500
gpu_freq_min=500
init_uart_clock=0x2dc6c00
lcd_framerate=60
mask_gpu_interrupt0=1024
mask_gpu_interrupt1=0x10000
max_framebuffers=2
pause_burst_frames=1
program_serial_random=1
hdmi_force_cec_address:0=65535
hdmi_force_cec_address:1=65535
hdmi_pixel_freq_limit:0=0x11e1a300
hdmi_pixel_freq_limit:1=0x11e1a300

/boot/config.txtdtoverlay=pi3-miniuart-btを設定してシリアルコンソール表示するようにすると、core_freq=250に固定化される。

メモリ使用量(起動直後、アイドル状態)

> free -h
              total        used        free      shared  buff/cache   available
Mem:          3.8Gi       102Mi       3.5Gi       9.0Mi       141Mi       3.5Gi
Swap:          99Mi          0B        99Mi

デフォルト状態でのSDカードベンチマーク

ラズパイ4 + SanDisk Extreme 128GB

> sudo apt install hdparm
> curl http://www.nmacleod.com/public/sdbench.sh | sudo bash

> CONFIG:
CLOCK : 50.000 MHz
CORE  : 500
250 MHz, turbo=0
DATA  : 512 MB, /root/test.dat

HDPARM:
======
 HDIO_DRIVE_CMD(identify) failed: Invalid argument
 Timing O_DIRECT disk reads: 122 MB in  3.04 seconds =  40.11 MB/sec
 HDIO_DRIVE_CMD(identify) failed: Invalid argument
 Timing O_DIRECT disk reads: 120 MB in  3.01 seconds =  39.83 MB/sec
 HDIO_DRIVE_CMD(identify) failed: Invalid argument
 Timing O_DIRECT disk reads: 122 MB in  3.04 seconds =  40.16 MB/sec

WRITE:
=====
512+0 レコード入力
512+0 レコード出力
536870912 bytes (537 MB, 512 MiB) copied, 16.2977 s, 32.9 MB/s
512+0 レコード入力
512+0 レコード出力
536870912 bytes (537 MB, 512 MiB) copied, 16.119 s, 33.3 MB/s
512+0 レコード入力
512+0 レコード出力
536870912 bytes (537 MB, 512 MiB) copied, 16.0816 s, 33.4 MB/s

READ:
====
512+0 レコード入力
512+0 レコード出力
536870912 bytes (537 MB, 512 MiB) copied, 11.8716 s, 45.2 MB/s
512+0 レコード入力
512+0 レコード出力
536870912 bytes (537 MB, 512 MiB) copied, 11.8327 s, 45.4 MB/s
512+0 レコード入力
512+0 レコード出力
536870912 bytes (537 MB, 512 MiB) copied, 11.9027 s, 45.1 MB/s

RESULT (AVG):
============
Overlay config                      core_freq   turbo   overclock_50    WRITE        READ        HDPARM
bash: 86 行: printf: 500
250: 無効な数字です
                                       500        0      50.000 MHz     inf MB/s     inf MB/s   40.04 MB/s

前回のSDカードベンチのラズパイ3と比べると、ハードもSDカードも違うので正確な比較はできないけど、Writeが3倍近く、Readが2倍程度早いです。ただ、Samsung Evo PlusがWriteが特に遅かったので、SDカードによるものが大きい気がする。

Jetson Nanoと比較すると、Writeはほぼ同じ。Readはクロックの違いからか1/2程度の性能でした。

オーバークロックについて

一番気になっているのは、以下のサイトで/boot/config.txtをいじってオーバークロックする方法が記載されている。

ラズパイ4のデフォルト値を見ると、SDカードの値だけ異様に大きい値になっている。ひょっとしたらSDカードのアクセススピードがかなり速くなっているのかな?と思えた。

以前以下のサイトで、ラズパイやJetson NanoのSDカードアクセスのベンチマークを測定したが、Jetson Nanoがラズパイ3の3倍近いスコアだったのが印象的だった。

ワンボードのSDカードベンチ備忘録

Zero Pi3 Pi4
arm_freq 1000 1300 1500
core_freq 400 400 500
sdram_freq 450 500 3200

今回CPUも新しくなり、Jetson Nanoと同じくメモリが4GBになったので、CUDAコアはともかく基本性能で、ライバルJetson Nanoと比較してみる。

Byte Unix Benchmarks

以前の投稿でもByte-Unixbenchを利用して測定している。同じ条件でPi4に対して実行して結果だけ画面に表示してみる。


Dhrystone 2 using register variables       10130670.4 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2386.3 MWIPS (9.6 s, 7 samples)
Execl Throughput                                901.9 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        113091.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           31827.3 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        314166.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                              160574.0 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  47713.3 lps   (10.0 s, 7 samples)
Process Creation                               1875.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2431.4 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    730.8 lpm   (60.1 s, 2 samples)
System Call Overhead                         494556.6 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   10130670.4    868.1
Double-Precision Whetstone                       55.0       2386.3    433.9
Execl Throughput                                 43.0        901.9    209.8
File Copy 1024 bufsize 2000 maxblocks          3960.0     113091.9    285.6
File Copy 256 bufsize 500 maxblocks            1655.0      31827.3    192.3
File Copy 4096 bufsize 8000 maxblocks          5800.0     314166.0    541.7
Pipe Throughput                               12440.0     160574.0    129.1
Pipe-based Context Switching                   4000.0      47713.3    119.3
Process Creation                                126.0       1875.5    148.8
Shell Scripts (1 concurrent)                     42.4       2431.4    573.5
Shell Scripts (8 concurrent)                      6.0        730.8   1218.0
System Call Overhead                          15000.0     494556.6    329.7
                                                                   ========
System Benchmarks Index Score                                         322.0

------------------------------------------------------------------------
Benchmark Run: 金  7月 12 2019 00:16:34 - 00:44:29
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       39918555.1 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     9539.0 MWIPS (9.6 s, 7 samples)
Execl Throughput                               2695.7 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        212472.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           60153.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        625663.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                              608533.5 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 192738.9 lps   (10.0 s, 7 samples)
Process Creation                               4743.1 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5824.6 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    797.3 lpm   (60.1 s, 2 samples)
System Call Overhead                        1866434.0 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   39918555.1   3420.6
Double-Precision Whetstone                       55.0       9539.0   1734.4
Execl Throughput                                 43.0       2695.7    626.9
File Copy 1024 bufsize 2000 maxblocks          3960.0     212472.9    536.5
File Copy 256 bufsize 500 maxblocks            1655.0      60153.0    363.5
File Copy 4096 bufsize 8000 maxblocks          5800.0     625663.9   1078.7
Pipe Throughput                               12440.0     608533.5    489.2
Pipe-based Context Switching                   4000.0     192738.9    481.8
Process Creation                                126.0       4743.1    376.4
Shell Scripts (1 concurrent)                     42.4       5824.6   1373.7
Shell Scripts (8 concurrent)                      6.0        797.3   1328.8
System Call Overhead                          15000.0    1866434.0   1244.3
                                                                   ========
System Benchmarks Index Score                                         857.3

SDカードベンチマーク

今回使用するSDカードは、以下の2種類(サイズが違うがそこは無視する)

Raspbian Stretch

Raspbian Buster lite edition (Samsung Evo Plus)

  • cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=7ee80803-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
  • config.txt
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

Raspbian Buster

ラズパイ4発売に併せて、OSも新しくなりました。チューニングで修正するであろうcmdline.txtconfig.txtのデフォルト値を載せておきます。(7/6現在、マイナーバージョンアップで変わる可能性あり)

Raspbian Buster lite edition (Samsung Evo Plus)

  • cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=0634f60c-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
  • config.txt
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2

[all]
#dtoverlay=vc4-fkms-v3d

Raspbian Buster standard edition (SanDisk Extreme)

  • cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=bd1bcc8b-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh splash plymouth.ignore-serial-consoles
  • config.txt
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2

[all]
#dtoverlay=vc4-fkms-v3d


-->