Raspberry Pi 4 の各種ベンチマークを取ってみました。 UnixBenchとfioです。 雑にほぼデフォルト設定で計測ました。 チューニング等もまったくしてません。
Raspberry Pi 4 の生の結果は最後にまとめて貼っておきます。
比較対象
何かしら比較対象がほしかったので、この辺りを使いました。
マシン | CPU | Memory | Disk 1 | Disk 2 | OS | Kernel |
---|---|---|---|---|---|---|
Raspberry Pi 4 Model B | Arm Cortex-A72 1.5GHz 4 cores | 8GB | Samsung EVO Plus 512GB microSDXC | - | Raspberry OS buster | Linux 4.19.118 |
Raspberry Pi 3 Model B | Arm Cortex-A53 1.2GHz 4 cores | 1GB | Kingston microSDHC 16GB | - | Raspberry OS | ? |
Server | Core i3-2100T 2.5GHz 2 cores 4 threads | 16GB | WD SATA 1TB | - | Debian buster | Linux 4.19.0 |
Desktop PC | Core i7-8700K 3.7GHz 6 cores 12 threads | 64GB | CFD SATA3.0 NAND SSD 240GB | WD Blue SATA3.0 5400rpm 4TB | Ubuntu 19.10 | Linux 5.3.0 |
注意点として、Raspberry Pi 4は多分電力が足りてません。1
UnixBench
セットアップ
sudo apt install git
git clone https://github.com/kdlucas/byte-unixbench
cd byte-unixbench/UnixBench
./Run
結果
Raspberry Pi 3に比べるとだいぶ良い結果が出てますね。 System Call Overheadだけなぜか負けてます。
一番お金かかってるデスクトップPCが圧倒的に勝ってて安心しました。
グラフはIndex Scoreです。
fio
セットアップ
sudo apt install libaio-dev fio
fioのバージョンは3.12。
設定
[sequential_read]
rw=read
size=1g
ioengine=libaio
direct=1
group_reporting
[sequential_write]
rw=write
size=1g
ioengine=libaio
direct=1
group_reporting
[random_read]
rw=randread
size=1g
ioengine=libaio
direct=1
group_reporting
[random_write]
rw=randwrite
size=1g
ioengine=libaio
direct=1
group_reporting
結果
今回Evo PlusというそこそこいいSDカードを使ってますが、Seqeuntial、RandomともにReadが2500IOPS、Writeが600IPS程度でした。
Raspberry Pi 3 は遅すぎたので計測してません。
ログ
以下、Raspberry Pi 4の計測ログです。
UnixBench
========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)
System: raspberrypi: GNU/Linux
OS: GNU/Linux -- 4.19.118-v8+ -- #1311 SMP PREEMPT Mon Apr 27 14:32:38 BST 2020
Machine: aarch64 (unknown)
Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
15:04:13 up 1:53, 1 user, load average: 0.15, 0.04, 0.04; runlevel Jul
------------------------------------------------------------------------
Benchmark Run: Fri Jul 03 2020 15:04:13 - 15:32:03
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 10044316.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2384.8 MWIPS (9.6 s, 7 samples)
Execl Throughput 1475.8 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 181135.5 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 53422.1 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 482507.3 KBps (30.0 s, 2 samples)
Pipe Throughput 315057.3 lps (10.0 s, 7 samples)
Pipe-based Context Switching 50713.4 lps (10.0 s, 7 samples)
Process Creation 2397.1 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 3494.7 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1011.6 lpm (60.0 s, 2 samples)
System Call Overhead 276956.8 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 10044316.9 860.7
Double-Precision Whetstone 55.0 2384.8 433.6
Execl Throughput 43.0 1475.8 343.2
File Copy 1024 bufsize 2000 maxblocks 3960.0 181135.5 457.4
File Copy 256 bufsize 500 maxblocks 1655.0 53422.1 322.8
File Copy 4096 bufsize 8000 maxblocks 5800.0 482507.3 831.9
Pipe Throughput 12440.0 315057.3 253.3
Pipe-based Context Switching 4000.0 50713.4 126.8
Process Creation 126.0 2397.1 190.2
Shell Scripts (1 concurrent) 42.4 3494.7 824.2
Shell Scripts (8 concurrent) 6.0 1011.6 1685.9
System Call Overhead 15000.0 276956.8 184.6
========
System Benchmarks Index Score 413.0
------------------------------------------------------------------------
Benchmark Run: Fri Jul 03 2020 15:32:03 - 15:59:55
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 40160712.8 lps (10.0 s, 7 samples)
Double-Precision Whetstone 9531.8 MWIPS (9.5 s, 7 samples)
Execl Throughput 4203.8 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 288344.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 85784.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 707436.9 KBps (30.0 s, 2 samples)
Pipe Throughput 1255488.7 lps (10.0 s, 7 samples)
Pipe-based Context Switching 196997.0 lps (10.0 s, 7 samples)
Process Creation 7350.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 8076.0 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1090.8 lpm (60.1 s, 2 samples)
System Call Overhead 1070133.2 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 40160712.8 3441.4
Double-Precision Whetstone 55.0 9531.8 1733.0
Execl Throughput 43.0 4203.8 977.6
File Copy 1024 bufsize 2000 maxblocks 3960.0 288344.1 728.1
File Copy 256 bufsize 500 maxblocks 1655.0 85784.9 518.3
File Copy 4096 bufsize 8000 maxblocks 5800.0 707436.9 1219.7
Pipe Throughput 12440.0 1255488.7 1009.2
Pipe-based Context Switching 4000.0 196997.0 492.5
Process Creation 126.0 7350.2 583.3
Shell Scripts (1 concurrent) 42.4 8076.0 1904.7
Shell Scripts (8 concurrent) 6.0 1090.8 1818.0
System Call Overhead 15000.0 1070133.2 713.4
========
System Benchmarks Index Score 1056.0
fio
$ fio sequential_read.fio
sequential_read: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.12
Starting 1 process
Jobs: 1 (f=1): [R(1)][100.0%][r=11.5MiB/s][r=2938 IOPS][eta 00m:00s]
sequential_read: (groupid=0, jobs=1): err= 0: pid=2885: Fri Jul 3 17:40:44 2020
read: IOPS=2980, BW=11.6MiB/s (12.2MB/s)(1024MiB/87960msec)
slat (usec): min=33, max=171, avg=64.53, stdev=12.05
clat (usec): min=173, max=20162, avg=260.20, stdev=42.60
lat (usec): min=245, max=20201, avg=326.99, stdev=46.23
clat percentiles (usec):
| 1.00th=[ 229], 5.00th=[ 241], 10.00th=[ 245], 20.00th=[ 249],
| 30.00th=[ 253], 40.00th=[ 258], 50.00th=[ 262], 60.00th=[ 265],
| 70.00th=[ 269], 80.00th=[ 269], 90.00th=[ 281], 95.00th=[ 281],
| 99.00th=[ 285], 99.50th=[ 293], 99.90th=[ 326], 99.95th=[ 334],
| 99.99th=[ 355]
bw ( KiB/s): min=11272, max=14344, per=100.00%, avg=11920.73, stdev=485.76, samples=175
iops : min= 2818, max= 3586, avg=2980.18, stdev=121.44, samples=175
lat (usec) : 250=21.51%, 500=78.48%, 750=0.01%
lat (msec) : 2=0.01%, 4=0.01%, 10=0.01%, 50=0.01%
cpu : usr=4.45%, sys=14.76%, ctx=524478, majf=0, minf=23
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=262144,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=11.6MiB/s (12.2MB/s), 11.6MiB/s-11.6MiB/s (12.2MB/s-12.2MB/s), io=1024MiB (1074MB), run=87960-87960msec
Disk stats (read/write):
mmcblk0: ios=261954/17, merge=0/4, ticks=77219/147, in_queue=76448, util=86.89%
$ fio sequential_write.fio
sequential_write: (g=0): rw=write, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.12
Starting 1 process
Jobs: 1 (f=1): [W(1)][100.0%][w=2530KiB/s][w=632 IOPS][eta 00m:00s]
sequential_write: (groupid=0, jobs=1): err= 0: pid=2906: Fri Jul 3 17:47:38 2020
write: IOPS=643, BW=2573KiB/s (2635kB/s)(1024MiB/407490msec); 0 zone resets
slat (usec): min=41, max=3885, avg=90.60, stdev=12.75
clat (usec): min=234, max=30675, avg=1450.39, stdev=687.41
lat (usec): min=706, max=30723, avg=1543.73, stdev=688.03
clat percentiles (usec):
| 1.00th=[ 701], 5.00th=[ 775], 10.00th=[ 791], 20.00th=[ 857],
| 30.00th=[ 947], 40.00th=[ 1270], 50.00th=[ 1336], 60.00th=[ 1418],
| 70.00th=[ 1811], 80.00th=[ 1876], 90.00th=[ 1909], 95.00th=[ 1975],
| 99.00th=[ 3884], 99.50th=[ 3884], 99.90th=[ 3949], 99.95th=[ 7570],
| 99.99th=[12649]
bw ( KiB/s): min= 2480, max= 3616, per=100.00%, avg=2573.18, stdev=128.26, samples=814
iops : min= 620, max= 904, avg=643.29, stdev=32.06, samples=814
lat (usec) : 250=0.01%, 750=3.62%, 1000=26.62%
lat (msec) : 2=65.39%, 4=4.28%, 10=0.05%, 20=0.04%, 50=0.01%
cpu : usr=1.30%, sys=4.11%, ctx=525790, majf=0, minf=26
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=2573KiB/s (2635kB/s), 2573KiB/s-2573KiB/s (2635kB/s-2635kB/s), io=1024MiB (1074MB), run=407490-407490msec
Disk stats (read/write):
mmcblk0: ios=0/262249, merge=0/81, ticks=0/392373, in_queue=388416, util=95.27%
$ fio random_read.fio
random_read: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.12
Starting 1 process
Jobs: 1 (f=0): [f(1)][100.0%][r=9849KiB/s][r=2462 IOPS][eta 00m:00s]
random_read: (groupid=0, jobs=1): err= 0: pid=2948: Fri Jul 3 17:50:27 2020
read: IOPS=2453, BW=9813KiB/s (10.0MB/s)(1024MiB/106851msec)
slat (usec): min=36, max=451, avg=70.23, stdev=11.65
clat (usec): min=132, max=1188, avg=324.00, stdev=13.82
lat (usec): min=245, max=1429, avg=396.66, stdev=22.00
clat percentiles (usec):
| 1.00th=[ 289], 5.00th=[ 302], 10.00th=[ 310], 20.00th=[ 314],
| 30.00th=[ 318], 40.00th=[ 322], 50.00th=[ 326], 60.00th=[ 326],
| 70.00th=[ 330], 80.00th=[ 338], 90.00th=[ 343], 95.00th=[ 343],
| 99.00th=[ 347], 99.50th=[ 351], 99.90th=[ 371], 99.95th=[ 383],
| 99.99th=[ 424]
bw ( KiB/s): min= 9516, max=11528, per=99.96%, avg=9808.85, stdev=357.16, samples=213
iops : min= 2379, max= 2882, avg=2452.24, stdev=89.29, samples=213
lat (usec) : 250=0.11%, 500=99.89%, 750=0.01%, 1000=0.01%
lat (msec) : 2=0.01%
cpu : usr=4.29%, sys=13.33%, ctx=524445, majf=0, minf=22
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=262144,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=9813KiB/s (10.0MB/s), 9813KiB/s-9813KiB/s (10.0MB/s-10.0MB/s), io=1024MiB (1074MB), run=106851-106851msec
Disk stats (read/write):
mmcblk0: ios=261589/0, merge=0/0, ticks=94558/0, in_queue=91684, util=85.93%
$ fio random_write.fio
random_write: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.12
Starting 1 process
Jobs: 1 (f=1): [w(1)][100.0%][w=2574KiB/s][w=643 IOPS][eta 00m:00s]
random_write: (groupid=0, jobs=1): err= 0: pid=2952: Fri Jul 3 17:57:46 2020
write: IOPS=632, BW=2530KiB/s (2591kB/s)(1024MiB/414491msec); 0 zone resets
slat (usec): min=41, max=4332, avg=91.16, stdev=15.87
clat (usec): min=579, max=88041, avg=1474.56, stdev=1151.84
lat (usec): min=707, max=88136, avg=1568.45, stdev=1152.45
clat percentiles (usec):
| 1.00th=[ 701], 5.00th=[ 775], 10.00th=[ 791], 20.00th=[ 857],
| 30.00th=[ 963], 40.00th=[ 1270], 50.00th=[ 1336], 60.00th=[ 1418],
| 70.00th=[ 1811], 80.00th=[ 1876], 90.00th=[ 1909], 95.00th=[ 1975],
| 99.00th=[ 3884], 99.50th=[ 3884], 99.90th=[11469], 99.95th=[30802],
| 99.99th=[32375]
bw ( KiB/s): min= 2096, max= 3576, per=100.00%, avg=2529.50, stdev=147.52, samples=828
iops : min= 524, max= 894, avg=632.35, stdev=36.88, samples=828
lat (usec) : 750=3.66%, 1000=26.42%
lat (msec) : 2=65.52%, 4=4.25%, 10=0.02%, 20=0.05%, 50=0.07%
lat (msec) : 100=0.01%
cpu : usr=1.35%, sys=4.12%, ctx=525780, majf=0, minf=21
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=2530KiB/s (2591kB/s), 2530KiB/s-2530KiB/s (2591kB/s-2591kB/s), io=1024MiB (1074MB), run=414491-414491msec
Disk stats (read/write):
mmcblk0: ios=0/262251, merge=0/83, ticks=0/398727, in_queue=393828, util=94.97%