2016年11月8日火曜日

【完徹】 もっと速くならないかなぁ、Raspberry pi 2

買って味見はしたけれどそれだけで放置状態のガジェットっていろいろありますよね.大金持ちがポルシェとかフェラーリとかブガッティをガレージにしこたま蓄えてピカピカに磨き上げているのも同じ心理なのではないでしょうか?

わたしの場合はお値段お手ごろなRaspberry pi 2を放置していました.動画再生ができると嬉しいのですが、買ってすぐにトライしたけれど動画再生にはちょっち能力不足という結論でした.

今回は簡単には諦めずに各種条件でRaspberry pi 2をベンチマークしてみました.ですが、ベンチマークが深いハマリへのきっかけになっていたとは、昨夜のわたしは知る由もなかったのです...

何が起きたかというと、UnixBenchというLinux用のベンチマークソフトでRaspberry pi 2のベンチ測定してみました.ところが、ベンチスコアの再現性が全くない.そんなバカな話はないので、何が原因なのかをチェックして徹夜してしまったんです.

【条件】
Raspberry pi 2
SD16GB Class10 UHC-I
2016-09-23-raspbian-jessie   Linux4.4.21-v7    (現時点で最新)  
UnixBench

【ベンチ表示例】
Dhrystone 2 using register variables        8432016.8 lps   (10.0 s, 1 samples)
Double-Precision Whetstone                     1821.5 MWIPS (10.0 s, 1 samples)
Execl Throughput                               1091.7 lps   (29.5 s, 1 samples)
File Copy 1024 bufsize 2000 maxblocks         93955.0 KBps  (30.0 s, 1 samples)
File Copy 256 bufsize 500 maxblocks           27009.0 KBps  (30.0 s, 1 samples)
File Copy 4096 bufsize 8000 maxblocks        212607.0 KBps  (30.0 s, 1 samples)
Pipe Throughput                              709039.2 lps   (10.0 s, 1 samples)
Pipe-based Context Switching                 110734.7 lps   (10.0 s, 1 samples)
Process Creation                               2480.7 lps   (30.0 s, 1 samples)
Shell Scripts (1 concurrent)                   2147.6 lpm   (60.1 s, 1 samples)
Shell Scripts (8 concurrent)                    263.7 lpm   (60.3 s, 1 samples)
System Call Overhead                        1758653.6 lps   (10.0 s, 1 samples)
==========================================================================
System Benchmarks Index Score    371.9

UnixBenchはいろいろなベンチのパッケージですが、以下では末尾の総合得点である371.9だけに着目してゆきます.

【ベンチスコア】
いろいろやって、ラズパイ2で372というスコアがベスト値でした.

追記: ラズパイ3でベストスコアが416でした.
ラズパイ3だとunixbenchのmakeが動かないかもしれません.対処法はMakefileの中で、
修正前   OPTON += -march=native -mtune=native
修正後   OPTON += -mcpu=cortex-a53 -mfpu=neon-vfpv4

ちなみに、他のPCではこんなスコアです.
  Atom D425 @ 1.80GHz    DDR3-2GB   Linux3.16.0-4-amd64     452
  Corei7-4790 @ 3.60GHz  DDR3-8GB   Cygwin2.0.2                  832

これらと比較するとラズパイ2の372というスコアは、そんなに悪くない数値のように思えます.ですが、このUnixBenchはグラフィックベンチを含みません.AtomやCorei7よりもグラフィック処理能力でラズパイ2は随分と劣るように思われます.動画再生が全然出来ませんから.
ラズパイ2ですと、MPEG2再生は解像度が350x240程度に低くてもほとんどフリーズ状態です.解像度の低いMP4ならなんとか動画として再生できました.その程度です.

【ベンチが変だ】
クロック周波数を変えたりしていたら、条件は同じであるにも関わらず、気付いたらスコアが289に低下してしまったのです.ここから徹夜モードへ.

Dhrystone 2 using register variables        8191886.8 lps   (10.0 s, 1 samples)
Double-Precision Whetstone                     1227.2 MWIPS (9.9 s, 1 samples)
Execl Throughput                                791.3 lps   (29.8 s, 1 samples)
File Copy 1024 bufsize 2000 maxblocks         77843.0 KBps  (30.0 s, 1 samples)
File Copy 256 bufsize 500 maxblocks           22092.0 KBps  (30.0 s, 1 samples)
File Copy 4096 bufsize 8000 maxblocks        206288.0 KBps  (30.0 s, 1 samples)
Pipe Throughput                              486865.0 lps   (10.0 s, 1 samples)
Pipe-based Context Switching                  69923.0 lps   (10.0 s, 1 samples)
Process Creation                               1874.5 lps   (30.0 s, 1 samples)
Shell Scripts (1 concurrent)                   1736.8 lpm   (60.1 s, 1 samples)
Shell Scripts (8 concurrent)                    228.3 lpm   (60.4 s, 1 samples)
System Call Overhead                        1190335.0 lps   (10.0 s, 1 samples)
==========================================================================
System Benchmarks Index Score      288.9

【スコア低下の原因】
1) LANケーブルを接続しただけでスコアが 372→326 へ低下しました.eth0の処理で足を引っ張られていたラズパイ2なのでした.

2) さらにUSBメモリを挿しただけでスコアが 326→315 へ低下しました.なにかとUSBメモリに気が散っていたようです.

3) ftpdとtelnetdをインストールしたらスコアが 315→296 へ低下しました.デーモンのせいで気が散ったようです.

4) PCからラズパイ2にtelnet接続し、画面を2つ開いたらスコアが 296→289 へ低下しました.

ベンチが変だ!と腰が抜けた原因は、1~4の累積だったのです.ゆえに実使用条件ではスコア=289ってことですね.づがーん.

まぁここまでだったら徹夜するこたぁなかったんだがな、もっとおかしな事象が出たのよ.

【over clockでスコア激下がり】
raspi-configコマンドでoverclockできます.次の二者択一です.
  通常   CPU900MHz     core250MHz    SDRAM450MHz    高電圧0
  OC     CPU1000MHz    core500MHz    SDRAM500MHz    高電圧2

通常→OCに設定変更したらスコアが 372→296 へ激オチしました.
LANケーブル非接続、USBメモリなし、ftpd,telnetdなし の好条件なのにです.

OCしたのにスコアが激下がるってどういうことでしょう? これで徹夜にもつれこみました.

【OCでスコア激下がりの原因と対策】
5) CPU900→1000MHzはスコアにほとんど影響しない  (他要因が支配的?)

6) 激下がり原因は、core500MHz、高電圧2 がそれぞれ足を引っ張っている  (原因不明)

7) SDRAM500はスコアにほとんど影響しない

対策としては、
・OCせず900MHzのままで使うのが無難

・OCするにしてもraspi-configでOCしない  (core500と高電圧2を巻き添えにしてしまうから)

・CPUだけ、あるいはSDRAMだけをOCできればまだマシ   (スコアに変化ないけどね)

・どうすればいいか?  → /boot/config.txtを編集する
コメントアウトされているところのコメントを外して数値を記入すればよい.reboot必要.
  arm_freq=1000        (CPU1000MHz)
  #core_freq=500
  sdram_freq=500       (SDRAM500MHz)
  #over_voltage=2

どうしてこんな症状なのか、詳細は不詳につき不明です.迷える子羊達の参考になれば幸いです.

追記: ストレージをUSBメモリにしたらかえって遅くなりました.たしか200台後半でした.

エイメン


人気ブログランキングへ







蛇足ながら、Rasbian OSのメインストレージをUSBメモリにする方法 をメモしておく.

rasbianの載ったSDカードをwindowsで開くと見えるのが/bootフォルダである.残念ながら、/bootはSDカードに置かざるを得ないので、SDカードを使わなくすることはできない.それでも/boot以外をUSBメモリに置くことはできる.もしかしたらSDカードクラス10よりもUSBメモリの方が高速かもしれない、というのが期待である.  →期待外れで遅かった、スコア280ぐらいだった.

用意するもの
・windowsマシン
・Linuxマシン    (raspberry piでもOK)
・SDカード (8GB以上?)  以下SD
・SDリーダー
・USBメモリ (8GB以上?)  以下USB
※最近のRasbianは巨大なので4GBでは入らないと思う

下準備
・USBはフォーマットして平べったい8GBのFATにしておく
・SDにはRasbianのイメージを書いておく   (よくあるやり方で)
※USBにRasbianイメージを書いてスタートすると動かないようだ

SD・USBの認識
・SDもUSBも挿さずにLinuxマシンを起動する
・sudoとかがめんどいのでrootでログインする
・まずはUSBをLinuxマシンに挿す
・fdisk -l と打つと、USBはたぶん/dev/sda1として認識されていることを確認
・つぎにSDをSDリーダーに挿し、それをLinuxマシンのUSBポートに挿す
・fdisk -lと打つと、SDはたぶん/dev/sdb1と/dev/sdb2として認識されていることを確認

OSイメージコピー
dd if=/dev/sdb2 of=/dev/sda1
・sdb2がSD上のOSイメージ、sda1がUSB、ゆえにSD→USBへのコピーの意味
・10分ぐらいかかる.terminalには経過表示等が何も表示されないので不気味な沈黙のまま待つ.USBが点滅すると状況がわかる.

USBの領域整理
umount /dev/sda1
e2fsck -f /dev/sda1    ([Y/n]入力を求められたらEnterを押す)
resize2fs /dev/sda1
e2fsck -f /dev/sda1    もう一度チェックしといたりして

USBのfstabの変更
mount -t ext4 -o defaults /dev/sda1 /mnt
cd /mnt/etc
nano fstab
mmcblk0p2  →  sda1 に変更し   save&exit
umount /dev/sda1

SDのboot設定の変更
・SDリーダーをLinuxマシンから抜き、windowsマシンに挿す.
・bootフォルダ(FAT)を開く
・cmdline.txtをエディタで開き、mmcblk0p2 → sda1に変更してsaveする

USBから起動
・SDをwindowsマシンから抜き、raspberry piのSDスロットに挿す (このとき別のSDが入っているはずだがもう使わない)
・USBをraspberry piに挿す
・起動
※ここで、SDカードの情報はもはやFATの/bootしか使っていないので、1GBの小さなSDカードに/bootだけをwindowsでコピーして使いたいと思うのが人情だが、トライしてみると起動途中でハングするのでダメっぽい.




0 件のコメント:

コメントを投稿