NanoPi NEOベンチマーク

NanoPi NEO
画像は前回の使い回し

そういえばNanoPi NEOの性能はどの程度なものだろうか、ということでベンチマーク。
使ったのはUnixBench。
armbianは基本的なものは一通り揃っているのでUnixBench以外は特に事前に準備する必要は無し。

$ wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
$ tar -zxvf UnixBench5.1.3.tgz
$ cd ./UnixBench
$ ./Run -c 1 -c 4

UnixBenchの実行は ./Run でも良いが、今回は4コアのCPUなので単独実行の-c 1と4パラレル実行の-c 4を追加指定している。
なお、UnixBenchは計測に時間がかかる。NanoPi NEOでは大戸屋で食事して歯を磨いてトイレに行くくらいは余裕。

make[1]: Entering directory '/home/foobar/UnixBench'
Checking distribution of files
./pgms  exists
./src  exists
./testdir  exists
./tmp  exists
./results  exists
make[1]: Leaving directory '/home/foobar/UnixBench'
sh: 1: 3dinfo: not found

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com


1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

1 x Execl Throughput  1 2 3

1 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

1 x File Copy 256 bufsize 500 maxblocks  1 2 3

1 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

1 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

1 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

1 x Process Creation  1 2 3

1 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

1 x Shell Scripts (1 concurrent)  1 2 3

1 x Shell Scripts (8 concurrent)  1 2 3

4 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

4 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

4 x Execl Throughput  1 2 3

4 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

4 x File Copy 256 bufsize 500 maxblocks  1 2 3

4 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

4 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

4 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

4 x Process Creation  1 2 3

4 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

4 x Shell Scripts (1 concurrent)  1 2 3

4 x Shell Scripts (8 concurrent)  1 2 3

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: nanopineo: GNU/Linux
   OS: GNU/Linux -- 3.4.113-sun8i -- #28 SMP PREEMPT Thu Feb 2 02:01:28 CET 2017
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   10:27:43 up 4 min,  1 user,  load average: 0.20, 0.51, 0.28; runlevel 5

------------------------------------------------------------------------
Benchmark Run: Fri Feb 24 2017 10:27:44 - 11:08:57
0 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        2944908.5 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                      423.9 MWIPS (10.0 s, 7 samples)
Execl Throughput                                399.6 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         72919.0 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           22225.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        173730.8 KBps  (30.0 s, 2 samples)
Pipe Throughput                              186981.1 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  22891.7 lps   (10.0 s, 7 samples)
Process Creation                                896.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   1126.3 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                    313.2 lpm   (60.2 s, 2 samples)
System Call Overhead                         501993.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    2944908.5    252.3
Double-Precision Whetstone                       55.0        423.9     77.1
Execl Throughput                                 43.0        399.6     92.9
File Copy 1024 bufsize 2000 maxblocks          3960.0      72919.0    184.1
File Copy 256 bufsize 500 maxblocks            1655.0      22225.5    134.3
File Copy 4096 bufsize 8000 maxblocks          5800.0     173730.8    299.5
Pipe Throughput                               12440.0     186981.1    150.3
Pipe-based Context Switching                   4000.0      22891.7     57.2
Process Creation                                126.0        896.5     71.2
Shell Scripts (1 concurrent)                     42.4       1126.3    265.6
Shell Scripts (8 concurrent)                      6.0        313.2    522.0
System Call Overhead                          15000.0     501993.8    334.7
                                                                   ========
System Benchmarks Index Score                                         164.1

------------------------------------------------------------------------
Benchmark Run: Fri Feb 24 2017 11:08:57 - 11:51:07
0 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       11743019.5 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1696.8 MWIPS (10.0 s, 7 samples)
Execl Throughput                               1350.9 lps   (29.6 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         96558.8 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           37054.1 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        274432.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                              742384.9 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  92727.9 lps   (10.0 s, 7 samples)
Process Creation                               3428.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2500.0 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                    329.9 lpm   (60.5 s, 2 samples)
System Call Overhead                        1895488.7 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   11743019.5   1006.3
Double-Precision Whetstone                       55.0       1696.8    308.5
Execl Throughput                                 43.0       1350.9    314.2
File Copy 1024 bufsize 2000 maxblocks          3960.0      96558.8    243.8
File Copy 256 bufsize 500 maxblocks            1655.0      37054.1    223.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     274432.0    473.2
Pipe Throughput                               12440.0     742384.9    596.8
Pipe-based Context Switching                   4000.0      92727.9    231.8
Process Creation                                126.0       3428.3    272.1
Shell Scripts (1 concurrent)                     42.4       2500.0    589.6
Shell Scripts (8 concurrent)                      6.0        329.9    549.8
System Call Overhead                          15000.0    1895488.7   1263.7
                                                                   ========
System Benchmarks Index Score                                         429.0

1パラレル(つまりシングル、オプション無しの./Runと同じ)でIndex Scoreが164.1、4パラレルで429.0というのは他所の人が掲載しているUnixBenchの結果で見る限りはRaspberryPi2 ModelBに数字上は僅かに及ばないものの事実上「ほぼ匹敵」といってよいレベル。僅か$7.99という最低グレードのNanoPi NEOがこれだけの結果を出すとは正直意外。違った、メモリ512MBモデルは$9.99だった。

NanoPi NEOのUnixBenchでこちらのページでは4パラレルが342.6と書かれているが約25%も結果が違うのは何でだろう。個々の結果も全然違うっぽいけど・・
メモリ搭載量が違うモデルだからとか?

ところで、UnixBenchでは何故かCPUの認識が正しくなくて「0 CPUs in system;」という表示が出ている。

# cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 5 (v7l)
processor       : 0
BogoMIPS        : 2400.00

processor       : 1
BogoMIPS        : 2400.00

processor       : 2
BogoMIPS        : 2400.00

processor       : 3
BogoMIPS        : 2400.00

Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : sun8i
Revision        : 0000
Serial          : 2400****************

Serialの*の部分は伏せている。
なんとなく4コアあるらしげな表示ではあるが情報がいろいろ足りないように思う。これが原因でUnixBenchでもCPUの情報が変なのかな。

関連記事:

NanoPi NEOを動かしてみた

NanoPi NEO

NanoPi NEOはディスプレイ用の出力が無いのでその点注意。
で、UARTのピンはあるけどシリアルポートとしてDサブ9ピン(EIA-574)ポートがあるわけではないのでケーブル繋げばすぐ使えるようにはなってないし、NanoPi NEO用のCDやDVDのOSインストールメディアも無いので既に用意されているOSのイメージをMicroSDカードに書き込んでNanoPi NEOに挿して起動してSSHでアクセスするのが簡単。

先ずDietPiを試してみた。NanoPi NEO用のイメージをダウンロードして解凍したイメージファイルをMicroSDカードに書き込む。Windowsだと標準状態ではMicroSDカードにイメージを書き込むということができないのでWin32 Disk Imagerを使うのが定番ということになっているみたい。LinuxやFreeBSDだったら普通にddコマンドでいける。

MicroSDカードにイメージを書き込んだらNanoPi NEOのTFカードスロットに差し込む。
ネットワークケーブルも繋ぐ。
準備できたら電源投入。MicroUSBポートにUSB用のACアダプタを繋ぐなりPCのUSBポートと繋ぐなりして電源を供給する。

電源投入から30~60秒待ってからまずはNanoPi NEOと同じネットワークの他の端末でarp -aを実行。これはLinux, FreeBSD, Windows共通。
知らないMACアドレスが表示されているはずなのでそのMACアドレスの機器が持っているIPアドレスをコピー。実際にはNanoPi NEOの電源投入前にarp -aを一度実行しておいて電源投入後にもう一度実行して差分で探す方が良いかも。
今回DietPiで起動したところ次のようなのが出た。IPアドレスはDHCPで得ているのでDHCPサーバのIPアドレスのリース範囲設定によって違う筈。

(192.168.0.81) at 02:20:88:**:**:** on em3 expires in 530 seconds [ethernet]

MACアドレスの*の部分は隠している。今回は192.168.0.81というIPアドレスを取得したみたい。02:20:88というのは知らないMAC OUI

% ssh root@192.168.0.81[Enter] (IPアドレスはDHCP次第)
Password: dietpi

で、いろいろ試したかったのだが、何故かメニュー間の移動は正常でも何かの値を変更するととたんにネットワークの応答が無くなりその後全く使えなくなる。電源を入れ直してもダメ。
イメージを焼き直しても同じ。DietPiは定評があると思ってたんだけど全然ダメだった。

次にarmbianを試した。NanoPi NEO用のイメージが2種類あり、今回はUbuntu XenialではなくDebian Jessieをダウンロードした。解凍したイメージファイルをMicroSDカードに書き込むところはDietPiと同じ。

arp -aを実行すると今度はMACアドレス変わった。アレっ、可変なの?
MACアドレスが変わったのでDHCPでもDietPiのときとは違うIPアドレスが割り振られた。

(192.168.0.82) at 82:08:22:**:**:** on em3 expires in 1196 seconds [ethernet]

SSHでログインする。

% ssh root@192.168.0.82[Enter] (IPアドレスはDHCP次第)
Password: 1234

初回ログイン時にパスワード変更を求められる筈。


| \ | | __ _ _ __   ___ |  _ \(_) | \ | |
|  \| |/ _` | '_ \ / _ \| |_) | | |  \| |/ _ \/ _ \
| |\  | (_| | | | | (_) |  __/| | | |\  |  __/ (_) |
|_| \_|\__,_|_| |_|\___/|_|   |_| |_| \_|\___|\___/

Welcome to ARMBIAN 5.25 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun8i
System load:   0.00             Up time:       1 min
Memory usage:  8 % of 494Mb     IP:            192.168.0.82
CPU temp:      16°C
Usage of /:    8% of 15G

Last login: Thu Feb 23 01:27:05 2017 from 192.168.0.***
root@nanopineo:~# 
調べてまわらなくても簡単な情報はログイン時に表示される優しい造り。
今回購入したモデルはメモリが512MBのものだが、ビデオ出力が無い=メインメモリからビデオ用メモリを取られないので512MB丸ごとメモリを使えるみたい。ストレージは16GBのMicroSDだが8%しか使用していないということで容量的には余裕。12年前頃に出回っていた一般的なPCよりスペック良いかも。
# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 82:08:22:**:**:**  
          inet addr:192.168.0.82  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::8008:22ff:fe**:****/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:900 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1030 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:71671 (69.9 KiB)  TX bytes:176821 (172.6 KiB)
          Interrupt:114 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tunl0     Link encap:IPIP Tunnel  HWaddr   
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

繋いでいるネットワークにIPv6が設定されていないので使える状態になっていないが、SLAACが整った環境ならIPv6も最初から使えるみたい。

今回はDebianなのでパッケージ管理はapt-getを使う。
先ずはシステムを最新状態に更新。

# apt-get update
# apt-get upgrade

パッケージの追加。例えばtcpdumpをインストールする。

# apt-get install tcpdump

RPi-Monitorをインストールしたいならarmbianmonitorというコマンドにそれ用のオプションが用意されているよう。(下)

# armbianmonitor -r

実行して暫く待たされる。インストールが終わったらブラウザでhttp://192.168.0.82:8888 (IPアドレスはDHCPによる、NanoPi NEOに割り当てられたもの)にアクセスする。

NanoPi NEO status1
ステータス画面。ラズパイ用に作られたものの流用っぽい。

NanoPi NEO status2 これはロードアベレージ他のグラフ。他にメモリやネットワークの使用状況のグラフなども見ることができる。

心配だったので負荷かけたりいろいろ試してみたが予想以上にというか全くもって安定して動く。
普通のPCにDebian入れてるのと変わらない印象。
もちろん、ビデオ出力がないからインストールするソフトウエアはCLI用になるだろうけど。

動作時の写真がこの記事の一番上のもの。
電源ON時はNanoPi NEOのTFカードスロットとMicroUSBポートの間の緑のLEDが点灯・点滅するが、これに追加して隣の青LEDも点滅する。なお、青LEDが光る条件は不明。緑LEDは多少眩しい程度でどぎつくはないが、青LEDはどえらく眩しくて近くにあるだけで目が耐えられない。とりあえず紙で覆って使っている。
あと、ネットワークポート側も2つLEDが光る。
室温が低いからかNanoPi NEOに負荷をかけ続けてもヒートシンクは全然熱くなっていない。室温が高くなっても大丈夫かは不明。なお、この時期ヒートシンクが熱くならなくてもヒートシンクが要らないということではない。流石にヒートシンク無しで負荷かかるとSoCが熱で死ぬ筈(特に夏場)。

今回は火入れ程度のことしかしていない。活用についてはまた今度。

関連記事:
Up