NanoPi NEO2の最大クロック引き下げ後のUnixBench 再び

NanoPi NEO2の最大クロック引き下げ後のUnixBench 再び

armbianでNanoPi NEO2が正式サポートに戻ったのは良いんだけど、11月に入ってCPUの最大クロックが1008?から816MHz、DRAMクロックが672から648MHzに落とされた。そんなに安定しないのかしら? H5ってカタログスペックでは最大1500MHzだった筈が816MHzだと54%でしかない。1GHz?のときで67%しか性能発揮できないのかと残念に思っていたのに更に約20%ダウンはちょっとどうなの。
なお、SoCがH5とA64のデバイスがそうなったということでNanoPi NEO2という機種だけがクロックを下げられたということではないので念の為。

今回使用したのはARMBIAN 5.34 user-built Debian GNU/Linux 9 (stretch) 4.13.11-sunxi64。例によって最新ソースを標準カーネルオプションで自分でビルドしたもの
armbianの押しディスはUbuntuということでDebian版の新しいイメージファイルは提供されてこなかったが、昨日か一昨日からNanoPi NEO2のダウンロードページでUbuntu版と共にダウンロードできるようになっている。

永らくarmbianのNanoPi NEO2用はCPUの周波数周りの制御と表示ができないという状態が続いていたが、現在はできるようになっているのでその辺りを絡めて再度UnixBenchを実行してみた。

$ cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: cpufreq-dt
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 0 1 2 3
  maximum transition latency: 244 us.
  hardware limits: 408 MHz - 1.01 GHz
  available frequency steps: 408 MHz, 648 MHz, 816 MHz, 912 MHz, 960 MHz, 1.01 GHz
  available cpufreq governors: conservative, userspace, powersave, ondemand, performance, schedutil
  current policy: frequency should be within 480 MHz and 816 MHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 408 MHz.
  cpufreq stats: 408 MHz:72.84%, 648 MHz:0.18%, 816 MHz:26.85%, 912 MHz:0.02%, 960 MHz:0.03%, 1.01 GHz:0.07%  (205)
analyzing CPU 1:
  driver: cpufreq-dt
  CPUs which run at the same hardware frequency: 0 1 2 3                                                                         
  CPUs which need to have their frequency coordinated by software: 0 1 2 3                                                       
  maximum transition latency: 244 us.                                                                                            
  hardware limits: 408 MHz - 1.01 GHz                                                                                            
  available frequency steps: 408 MHz, 648 MHz, 816 MHz, 912 MHz, 960 MHz, 1.01 GHz                                               
  available cpufreq governors: conservative, userspace, powersave, ondemand, performance, schedutil                              
  current policy: frequency should be within 480 MHz and 816 MHz.                                                                
                  The governor "ondemand" may decide which speed to use                                                          
                  within this range.                                                                                             
  current CPU frequency is 408 MHz.                                                                                              
  cpufreq stats: 408 MHz:72.84%, 648 MHz:0.18%, 816 MHz:26.85%, 912 MHz:0.02%, 960 MHz:0.03%, 1.01 GHz:0.07%  (205)              
analyzing CPU 2:                                                                                                                 
  driver: cpufreq-dt                                                                                                             
  CPUs which run at the same hardware frequency: 0 1 2 3                                                                         
  CPUs which need to have their frequency coordinated by software: 0 1 2 3                                                       
  maximum transition latency: 244 us.                                                                                            
  hardware limits: 408 MHz - 1.01 GHz                                                                                            
  available frequency steps: 408 MHz, 648 MHz, 816 MHz, 912 MHz, 960 MHz, 1.01 GHz                                               
  available cpufreq governors: conservative, userspace, powersave, ondemand, performance, schedutil                              
  current policy: frequency should be within 480 MHz and 816 MHz.                                                                
                  The governor "ondemand" may decide which speed to use                                                          
                  within this range.                                                                                             
  current CPU frequency is 408 MHz.                                                                                              
  cpufreq stats: 408 MHz:72.84%, 648 MHz:0.18%, 816 MHz:26.85%, 912 MHz:0.02%, 960 MHz:0.03%, 1.01 GHz:0.07%  (205)              
analyzing CPU 3:                                                                                                                 
  driver: cpufreq-dt                                                                                                             
  CPUs which run at the same hardware frequency: 0 1 2 3                                                                         
  CPUs which need to have their frequency coordinated by software: 0 1 2 3                                                       
  maximum transition latency: 244 us.                                                                                            
  hardware limits: 408 MHz - 1.01 GHz                                                                                            
  available frequency steps: 408 MHz, 648 MHz, 816 MHz, 912 MHz, 960 MHz, 1.01 GHz                                               
  available cpufreq governors: conservative, userspace, powersave, ondemand, performance, schedutil                              
  current policy: frequency should be within 480 MHz and 816 MHz.                                                                
                  The governor "ondemand" may decide which speed to use                                                          
                  within this range.                                                                                             
  current CPU frequency is 408 MHz.                                                                                              
  cpufreq stats: 408 MHz:72.84%, 648 MHz:0.18%, 816 MHz:26.85%, 912 MHz:0.02%, 960 MHz:0.03%, 1.01 GHz:0.07%  (205)

ちゃんと表示される安心感。

$ cpufreq-info -p
480000 816000 ondemand

CPUの周波数が可変のガバナーで480〜816MHzで切り替わるのが初期値らしい。

$ cpufreq-info -s
408000:714935, 648000:1071, 816000:330629, 912000:99, 960000:98, 1008000:384  (461)

起動直後だけ912, 960, 1008MHzで動くこともあるが、その後は648, 816, 408MHzだけが使われているよう。ところで上の表示では使うことを指定している低い側のクロックは480MHzだった筈だが何で実際に使われてるのは408MHzなの?初期設定値を直す必要あり?
11月16日にarmbian本家で修正入った模様。

/etc/default/cpufrequtils
1
2
3
4
ENABLE=true
MIN_SPEED=480000  #←これ408000に直す?
MAX_SPEED=816000
GOVERNOR=ondemand
# ./Run -c 1 -c 4
中略
========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: nanopineo2: GNU/Linux
   OS: GNU/Linux -- 4.13.11-sunxi64 -- #5 SMP Sat Nov 4 16:56:56 JST 2017
   Machine: aarch64 (unknown)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   01:42:33 up 35 min,  1 user,  load average: 0.20, 0.05, 0.01; runlevel 5

------------------------------------------------------------------------
Benchmark Run: Mon Nov 06 2017 01:42:33 - 02:11:06
0 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        4037506.0 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                      762.7 MWIPS (10.0 s, 7 samples)
Execl Throughput                                979.7 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        119840.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           36258.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        251207.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                              315941.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  42966.4 lps   (10.0 s, 7 samples)
Process Creation                               2282.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   1664.0 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    475.1 lpm   (60.1 s, 2 samples)
System Call Overhead                         553484.4 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    4037506.0    346.0
Double-Precision Whetstone                       55.0        762.7    138.7
Execl Throughput                                 43.0        979.7    227.8
File Copy 1024 bufsize 2000 maxblocks          3960.0     119840.4    302.6
File Copy 256 bufsize 500 maxblocks            1655.0      36258.0    219.1
File Copy 4096 bufsize 8000 maxblocks          5800.0     251207.9    433.1
Pipe Throughput                               12440.0     315941.3    254.0
Pipe-based Context Switching                   4000.0      42966.4    107.4
Process Creation                                126.0       2282.5    181.2
Shell Scripts (1 concurrent)                     42.4       1664.0    392.5
Shell Scripts (8 concurrent)                      6.0        475.1    791.9
System Call Overhead                          15000.0     553484.4    369.0
                                                                   ========
System Benchmarks Index Score                                         273.8

------------------------------------------------------------------------
Benchmark Run: Mon Nov 06 2017 02:11:06 - 02:39:51
0 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       16239851.6 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     3049.2 MWIPS (10.0 s, 7 samples)
Execl Throughput                               2082.2 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        204322.2 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           60596.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        498464.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1262859.8 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 154271.9 lps   (10.0 s, 7 samples)
Process Creation                               4550.7 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3752.3 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    488.6 lpm   (60.2 s, 2 samples)
System Call Overhead                        2122985.7 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   16239851.6   1391.6
Double-Precision Whetstone                       55.0       3049.2    554.4
Execl Throughput                                 43.0       2082.2    484.2
File Copy 1024 bufsize 2000 maxblocks          3960.0     204322.2    516.0
File Copy 256 bufsize 500 maxblocks            1655.0      60596.0    366.1
File Copy 4096 bufsize 8000 maxblocks          5800.0     498464.9    859.4
Pipe Throughput                               12440.0    1262859.8   1015.2
Pipe-based Context Switching                   4000.0     154271.9    385.7
Process Creation                                126.0       4550.7    361.2
Shell Scripts (1 concurrent)                     42.4       3752.3    885.0
Shell Scripts (8 concurrent)                      6.0        488.6    814.3
System Call Overhead                          15000.0    2122985.7   1415.3
                                                                   ========
System Benchmarks Index Score                                         673.7

以前のUnixBenchの結果だとシングルが298.9、4パラレルが771.2だったので92%, 87%とそれぞれ1割程度低下している。もっと落ちるかと思ったけど意外と下がっていない。

/etc/default/cpufrequtils
1
2
3
4
5
6
ENABLE=true
#MIN_SPEED=480000
#MAX_SPEED=816000
MIN_SPEED=0
MAX_SPEED=0
GOVERNOR=ondemand

以前にやったように最低・最高クロックの指定を0にすることで利用可能なクロックの最低・最高クロックが使用されるようになる。
なお、MAX_SPEED=0では最大クロックにならない場合はMAX_SPEED=1008000など最大値を具体的な数値で指定する。

# systemctl restart cpufrequtils

(管理者権限で)cpufrequtilsを再起動して設定を反映させる。またはシステムの再起動。

$ cpufreq-info -p
408000 1008000 ondemand

最低408MHz, 最高1008MHzになった。

$ cpufreq-info -s
408000:34184, 648000:808, 816000:27, 912000:22, 960000:74, 1008000:321836  (399)

最大クロックの1008MHzが盛大に使用されているので上手く行った。

一時的に最大クロックを上げるだけであれば以下。

# cpufreq-set -u 1000M  最大クロックの値を1000MHzに変更
# cpufreq-set -f 1000M  最大クロックを1000MHzに固定

ということで最大クロック1008MHzで再度UnixBenchを実行。

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

   System: nanopineo2: GNU/Linux
   OS: GNU/Linux -- 4.13.11-sunxi64 -- #5 SMP Sat Nov 4 16:56:56 JST 2017
   Machine: aarch64 (unknown)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   13:16:03 up 1 min,  1 user,  load average: 0.15, 0.11, 0.04; runlevel 5

------------------------------------------------------------------------
Benchmark Run: Tue Nov 07 2017 13:16:03 - 13:44:24
0 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        5010045.8 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                      942.9 MWIPS (10.0 s, 7 samples)
Execl Throughput                               1198.3 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        142718.7 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           45978.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        290244.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                              393585.1 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  66809.4 lps   (10.0 s, 7 samples)
Process Creation                               2907.4 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   1975.3 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    546.8 lpm   (60.0 s, 2 samples)
System Call Overhead                         678989.9 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    5010045.8    429.3
Double-Precision Whetstone                       55.0        942.9    171.4
Execl Throughput                                 43.0       1198.3    278.7
File Copy 1024 bufsize 2000 maxblocks          3960.0     142718.7    360.4
File Copy 256 bufsize 500 maxblocks            1655.0      45978.9    277.8
File Copy 4096 bufsize 8000 maxblocks          5800.0     290244.0    500.4
Pipe Throughput                               12440.0     393585.1    316.4
Pipe-based Context Switching                   4000.0      66809.4    167.0
Process Creation                                126.0       2907.4    230.7
Shell Scripts (1 concurrent)                     42.4       1975.3    465.9
Shell Scripts (8 concurrent)                      6.0        546.8    911.3
System Call Overhead                          15000.0     678989.9    452.7
                                                                   ========
System Benchmarks Index Score                                         340.3

------------------------------------------------------------------------
Benchmark Run: Tue Nov 07 2017 13:44:24 - 14:12:52
0 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       20123717.5 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     3770.7 MWIPS (10.0 s, 7 samples)
Execl Throughput                               2364.6 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        252706.0 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           75117.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        544883.8 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1557000.2 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 251637.6 lps   (10.0 s, 7 samples)
Process Creation                               5481.4 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   4346.2 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    548.7 lpm   (60.3 s, 2 samples)
System Call Overhead                        2613135.0 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   20123717.5   1724.4
Double-Precision Whetstone                       55.0       3770.7    685.6
Execl Throughput                                 43.0       2364.6    549.9
File Copy 1024 bufsize 2000 maxblocks          3960.0     252706.0    638.1
File Copy 256 bufsize 500 maxblocks            1655.0      75117.0    453.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     544883.8    939.5
Pipe Throughput                               12440.0    1557000.2   1251.6
Pipe-based Context Switching                   4000.0     251637.6    629.1
Process Creation                                126.0       5481.4    435.0
Shell Scripts (1 concurrent)                     42.4       4346.2   1025.1
Shell Scripts (8 concurrent)                      6.0        548.7    914.5
System Call Overhead                          15000.0    2613135.0   1742.1
                                                                   ========
System Benchmarks Index Score                                         824.7

あれっ?(明確に)1008MHzだと以前より数値上がった。ということは・・・これまで(クロックが表示されないので不明だったのと、そう言われていたから)1008MHzで動いていたと思ったのが間違いで実は912MHzあたりで動いていた?

4パラレル824.7って凄いな・・(ボソッ)

関連記事:

ダイソー ヘッドスパブラシ

ちょっと気取った店に髪の毛を切りに行って洗髪。
店:「シャンプー入りま〜す」
店:「シート倒しま〜す」
店:「お顔の上失礼しま〜す」死体みたいに白い布を顔の上にかける
ジャー、サワサワ
店:「どこか痒いところございますか?」
俺:?!   「全部だよ!全部!!」(心の中の声)
俺:「無いです・・・」(現実)

昔風の4000円前後の床屋で前かがみで洗髪台に頭突っ込んでおっちゃんに頭皮ごと動かす勢いでワッシャワッシャして貰わないとスッキリしない。
たいてい店出て帰宅して速攻で風呂入って洗髪。

で、床屋関係なく自分で洗髪するとき、ついつい爪を立ててしまうので頭皮によろしくない。そこで利用するのが洗髪用のブラシ。 スーパーでもドラッグストアでも置いてるところは多いと思うけど価格は500〜1500円程度。意外と高い。
そして、素材によっては髪が絡んで軋むし、ブラシの先は削れるので結構な消耗品なのにブラシの先が2,3,4つに分かれてたりして更に寿命が短いものもある。ブラシが折れて脱落するモノも。

以前に100均の店で洗髪用のブラシを探したら数十年前からあるような丸い円盤型のブラシしか無かったと記憶しているけど、今回ダイソーで最近よくあるような掌で包んで持つタイプを見つけたので購入してみた。

洗髪ブラシ 1
ヘッドスパブラシ 男性用 100円(税抜き)
ブラシ部分は露出しているので触ってブラシの弾力を確認できる。(けど不衛生じゃない?)

洗髪ブラシ 2
裏側には説明書きがある。握り部分はポリプロピレン(PP)、ブラシ部分は塩化ビニル樹脂(PVC)。
何故か製造国の表示がいやらしいほど解り難くしてあって、そんなにバレたら売れないと思っているのかと。(中国じゃないけどクソ面倒な隣国の方)

洗髪ブラシ 3
ちょっと小ぶりだけど最近多い握り形状。昔の円盤型ブラシは握りの部分がねじ込み式の別パーツで洗髪中に回って外れたりそこが割れてすぐに壊れたけどこの手の握りは壊れない筈。

洗髪ブラシ 4
ドラッグストアなどで販売されてるちょっと高めのブラシもそうだけどブラシの土台部分に穴が空いていて洗髪時のシャンプーを含んだ水が排水できる(ということになっている)んだけど、実際にはこの手の穴からは殆ど排水されなくて不衛生になりがちなので使用後に毎回ブラシ部分全体を外して洗った方が良い。(お高めのブラシでブラシ部分が外し難いのがあるけど良くないよね)

洗髪ブラシ 5
使い終わったらこうやってブラシを外して洗う。中心に近い方のブラシの付け根が空洞になってるのは太いブラシの頭皮へのアタりを良くするためなのか早く折れることによる買い替えを狙っているのか。
ブラシ側の形成がよくないらしく歪んでいて握り部分へのハマりが良くない。(上の画像では中央最下段付近)

100円なのに予想に反して使い心地は結構良い。ブラシの素材が柔らかすぎず硬すぎないので頭皮へのアタりは良い方。ブラシ土台部分が山型なのだがもう少し低い山の方が良いかも。でないと使い方によってはブラシの中心部分しか頭皮に当たらないことも。 ブラシがPVCなので髪の毛が絡んで軋むことは無い。半高級品でシリコンとかゴム状の樹脂で出来てるのは使用するシャンプーによっては半端なく軋むことがあるので安っぽくてもPVCのが良いのかも。

100均ではかなりアタリの商品。

Up