昨日は、armbian.comでダウンロードしたNanoPi NEO3用のイメージを使ったらOSは起動したようだけどログインできなくて何もできず諦めた。 そこでその後、Armbianの最新のソースからNanoPi NEO3用のDebian buster 5.7.10をミニマルでビルドしてイメージファイルを作った。こちらはmicroSDカードに焼いてNanoPi NEO3に挿して電源投入したら特に何もなく普通に起動して、ログインも通常のArmbianの初期ID/Passの root / 1234 でログインできた。FriendlyELECの提供しているNanoPi NEO3用のUbuntu Coreとはだいぶ違うので、今回はビルドしたArmbian (Debian buster)で改めてUnixBenchを動かしてみた。
$ ./Run -c 1 -c 4
Can't locate Time/HiRes.pm in @INC (you may need to install the Time::HiRes module) (@INC contains: /etc/perl /usr/local/lib/aarch64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/aarch64-linux-gnu/perl5/5.28 /usr/share/perl5 /usr/lib/aarch64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/aarch64-linux-gnu/perl-base) at ./Run line 6.
Armbianの初起動の後にUnixBenchをダウンロードして、いきなり実行しようとしたら怒られた。何が足りないかは表示されるので必要に応じてパッケージをインストールする。
$ sudo apt update $ apt-cache search HiRes libmoosex-role-timer-perl - Moose role for measuring elapsed time with Time::HiRes perl - Larry Wall's Practical Extraction and Report Language
先でTime/HiRes.pmが無いと言われたのでPerlのHiRes.pm関係のパッケージを検索。libmoosex-role-timer-perlがそれらしい。
$ sudo apt install libmoosex-role-timer-perl gcc make libc6-dev
今回ビルドしたArmbianはミニマルなのでよく使うようなのもいろいろ入ってない。まぁ、自分の用途で足りないのは順次足すだけなので個人的は幕の内弁当よりミニマルを好んでる。
Perlのモジュールだけでなくgccやライブラリの類も入っていないので一緒にいれる。UnixBenchを動かすのに必要なのはこの辺り。
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
408000 600000 816000 1008000 1200000 1296000 1512000
前回のFriendlyELEC提供のUbuntuCoreではSoCのクロック上限は1296MHzだったがArmbianでは上限が1512MHzまである。
$ cpufreq-info -p
408000 1512000 ondemand
設定では408MHzから1512MHz(1.5GHz)まで可変のondemand設定になっている。今回は変更しないでこのまま使う。
$ cpufreq-info -s && ./Run -c 1 -c 4 && cpufreq-info -s 408000:302, 600000:21, 816000:19, 1008000:9151, 1200000:85399, 1296000:129732, 1512000:706762 (90860) ======================================================================== BYTE UNIX Benchmarks (Version 5.1.3) System: nanopineo3: GNU/Linux OS: GNU/Linux -- 5.7.10-rockchip64 -- #trunk SMP PREEMPT Mon Jul 27 22:40:16 JST 2020 Machine: aarch64 (unknown) Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8") 12:36:32 up 2:35, 1 user, load average: 1.00, 1.00, 1.41; runlevel unknown ------------------------------------------------------------------------ Benchmark Run: 火 7月 28 2020 12:36:32 - 13:04:57 0 CPUs in system; running 1 parallel copy of tests Dhrystone 2 using register variables 7369928.6 lps (10.0 s, 7 samples) Double-Precision Whetstone 1698.5 MWIPS (9.9 s, 7 samples) Execl Throughput 824.0 lps (29.9 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 129077.0 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 36297.6 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 361065.2 KBps (30.0 s, 2 samples) Pipe Throughput 262094.7 lps (10.0 s, 7 samples) Pipe-based Context Switching 45083.1 lps (10.0 s, 7 samples) Process Creation 1679.0 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 2102.3 lpm (60.0 s, 2 samples) Shell Scripts (8 concurrent) 463.8 lpm (60.0 s, 2 samples) System Call Overhead 428852.2 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 7369928.6 631.5 Double-Precision Whetstone 55.0 1698.5 308.8 Execl Throughput 43.0 824.0 191.6 File Copy 1024 bufsize 2000 maxblocks 3960.0 129077.0 326.0 File Copy 256 bufsize 500 maxblocks 1655.0 36297.6 219.3 File Copy 4096 bufsize 8000 maxblocks 5800.0 361065.2 622.5 Pipe Throughput 12440.0 262094.7 210.7 Pipe-based Context Switching 4000.0 45083.1 112.7 Process Creation 126.0 1679.0 133.3 Shell Scripts (1 concurrent) 42.4 2102.3 495.8 Shell Scripts (8 concurrent) 6.0 463.8 773.0 System Call Overhead 15000.0 428852.2 285.9 ======== System Benchmarks Index Score 302.1 ------------------------------------------------------------------------ Benchmark Run: 火 7月 28 2020 13:04:57 - 13:34:27 0 CPUs in system; running 4 parallel copies of tests Dhrystone 2 using register variables 17745604.0 lps (10.0 s, 7 samples) Double-Precision Whetstone 5914.4 MWIPS (9.9 s, 7 samples) Execl Throughput 1889.7 lps (29.9 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 189217.0 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 51289.7 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 601805.5 KBps (30.0 s, 2 samples) Pipe Throughput 673613.4 lps (10.0 s, 7 samples) Pipe-based Context Switching 97637.1 lps (10.0 s, 7 samples) Process Creation 3198.8 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 3585.3 lpm (60.0 s, 2 samples) Shell Scripts (8 concurrent) 462.6 lpm (60.2 s, 2 samples) System Call Overhead 1108397.2 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 17745604.0 1520.6 Double-Precision Whetstone 55.0 5914.4 1075.3 Execl Throughput 43.0 1889.7 439.5 File Copy 1024 bufsize 2000 maxblocks 3960.0 189217.0 477.8 File Copy 256 bufsize 500 maxblocks 1655.0 51289.7 309.9 File Copy 4096 bufsize 8000 maxblocks 5800.0 601805.5 1037.6 Pipe Throughput 12440.0 673613.4 541.5 Pipe-based Context Switching 4000.0 97637.1 244.1 Process Creation 126.0 3198.8 253.9 Shell Scripts (1 concurrent) 42.4 3585.3 845.6 Shell Scripts (8 concurrent) 6.0 462.6 771.0 System Call Overhead 15000.0 1108397.2 738.9 ======== System Benchmarks Index Score 590.2 408000:302, 600000:21, 816000:30, 1008000:22564, 1200000:178454, 1296000:250721, 1512000:826877 (178779)
ということで、12:36開始で13:34に終了、約1時間。UnixBenchの直前と直後にSoCのどのクロックがどの程度使われたか表示。(橙字部分)
見た感じ1008MHzより上が使われているみたいだが1.5GHzはあまり使われていない、温度が急上昇したわけでもないので謎。
シングルのインデックスは302.1ということで、NanoPi NEO2の1GHzと同等。前回FriendlyELEC提供のUbuntuCoreでは237という酷い値だったので数字でいえば25%改善。これは良いんじゃないかしら。しかし、4パラレルは590.2で前回FriendlyELEC提供のUbuntuCoreでは602.9なのであまり変わりがない。数字で言えばむしろ下がってるのが不思議。そして、やっぱりNanoPi NEO2の1GHzの80%のスコア。4パラレルのDhrystone 2の結果が昨日のFriendlyELECのUbuntuCoreより悪化が顕著。SoCが活躍する筈の項目じゃないの?
システム監視情報、これはNode Exporterで取得してシステム監視用ホストのPrometheusで収集蓄積、Grafanaでビジュアル化している。
赤い枠で囲ったあたりがUnixBenchが動いていた部分。ただし、グラフ毎に若干左右にズレてるのが上の画像では無視して枠を描いている。だから12:35程度の筈が12:30に枠線があったりする。
1番左下がSoCの温度計のグラフ。UnixBenchの前後はアイドル状態だが、アイドル時で80℃もあるのに、UnixBenchでSoC全開で何故か3℃程度しか上がらない。
アイドル中に見てみるとガバナーがondemandなのに、アイドル時にクロックが下がらなくて1.5GHzに張り付いてる。で、UnixBenchが動いてるときには逆に少し下がってる。凄い謎システム。だからアイドルでもSoCの温度も下がらないのね。この辺りがは早めに修正されることを願うばかり。