2020年6月28日日曜日

ラズベリーパイ Docker & Docker-compose導入

mirakurunの導入にDockerが必要らしいが、docker-compose pull で失敗する。
Dockerってなに? な状態から、導入まで

環境

・RaspberryPi 3B+
・カーネル:Linux raspberrypi 4.19.118-v7+
・OS: Raspbian GNU/Linux 10 (buster)



Dockerってなに?

 Linux上で別なLinuxシステムを起動するコンテナ型仮想化を利用するための管理ソフト。
仮想化とは、OS上に仮想的に別なOSを構築するもの、VMwareとかVirtualBOXとかみたいなやつ。中でもコンテナ型仮想化とは、仮想的な物理マシンの構築は行わず、元のOS上に隔離されたエリアを作り、その内部で新たなソフトウェア実行環境を構築する。コンテナの内外では干渉しあわない。コンテナを移動するだけで別なPC環境でも同様に扱うことができる。ソフトウェアの開発・配布に便利、、、らしい。なんとなくしか分からん。

Docker-composeってなに?

 複数のコンテナを使用するサービスを構築・実行するための手順を自動化

導入


Docker
$ sudo apt install docker >> $ docker --version >>-bash: docker: コマンドが見つかりません
となり、apt では上手く導入できません。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
$ docker --version
>Docker version 19.03.11, build 42e35e6 となり、導入できました。
$ docker-compose version
>/usr/local/bin/docker-compose: 行 1: Not: コマンドが見つかりません

Docker-composeの導入
$ git clone https:///github.com/docker/compose.git
$ cd compose
$ git checkout 1.26.0
※最新版は1.26.0だった。(2020.6.22時点)
$ ./script/build/linux
>40分位かかった。
$ cd dist
>"docker-compose-Linux-armv7l"が作成されている。
$ ./docker-compose-Linux-armv7l version
>docker-compose version 1.26.0, build d4451659
>docker-py version: 4.2.1
>CPython version: 3.7.7
>OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
※このままではdocker-composeが使えないのでbinにコピーする。
$ sudo cp docker-compose-Linux-armv7l /usr/local/bin/docker-compose
$ sudo chown root:root /usr/local/bin/docker-compose
※chown:所有権の設定 chown ユーザー(:グループ) ファイル
$ sudo chmod 755 /usr/local/bin/docker-compose
※chmod 755:誰でも読込みと実行はできるが、書き込みは自分だけ。
$ ls -l /usr/local/bin/
>-rwxr-xr-x 1 root root 8156972  日付 docker-compose
$ docker-compose version
>docker-compose version 1.26.0, build d4451659
>docker-py version: 4.2.1
>CPython version: 3.7.7
>OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

docker-compose pullが出来るようになった。


ERROR: Couldn't connect to Docker daemon at+docker://localhost- is it running?と表示されてエラーになる場合、Docker と Docker-composeがグループに入っておらず、権限がない場合に表示されるらしい。
$ sudo usermod -aG docker $USER
にてdockerグループに現在のユーザが登録されて、docker-compose buildなどが実行可能となる。再起動(ログアウトでも可?)などすると登録が反映される。

2020年6月7日日曜日

ラズベリーパイ ベンチマーク

ラズベリーパイ3B+のベンチマークをしてみた。
使用したのは、
UnixBench:Version 5.1.3

Unix系OSであるRaspbianではUnixBenchというベンチマークが利用できるらしい。他にもsysbenchやGPU用のglmark2とかがあるらしい。機会があれば。

実行環境
RaspberryPi 3B+
OS:GNU/Linux -- 4.19.118-v7+ (Raspbian 10 Buster)
電源:5V 3.0A 


インストール&計測
$ git clone https://github.com/kdlucas/byte-unixbench
$ cd byte-unixbench/UnixBench
$ ./Run

ベンチマーク結果は /home/pi/byte-unixbench/UnixBench/results/  に入っています。1時間位はかかるみたいなので、時間にゆとりをもって行いましょう。56℃くらいまでCPU温度は上昇しました。


評価項目
テスト名説明
Dhrystone 2 using register variables 主に整数演算処理の性能を測定する古典的ベンチマークテスト。
結果数値は1秒間の処理回数が表示される。
Double-Precision Whetstone 主に浮動小数点演算処理の性能を測定する古典的ベンチマークテスト。
結果数値は1秒間の処理命令数が表示される。
Execl Throughput execl関数によるプロセス作成を行いその性能を測定する。
結果数値は1秒間のシステムコール処理回数が表示される。
File Copy (※1) bufsize (※2) maxblocks
(※1:1024,256,4096)
(※2:2000,500,8000)
ファイルのコピー速度を測定する。(※2)KBのファイルを(※1)Byte毎に処理。
結果数値は1秒間のファイル処理容量(KB)が表示される。
Pipe Throughput プロセス間通信で使われるパイプのスループットを測定する
結果数値はパイプ処理回数。
Pipe-based Context Switching プロセス間通信で使われるパイプによるコンテキストスイッチ性能を測定する
結果数値はパイプ処理回数
Process Creation 子プロセスの生成速度を測定する
結果数値はフォーク処理回数
System Call Overhead システムコール実行時のオーバーヘッドを測定する
結果数値は1秒間のシステムコール処理回数
Shell Scripts シェルスクリプトの実行性能を測定する
結果数値はループ処理回数


実行結果

Benchmark of raspberrypi / GNU/Linux on 土 6月 06 2020

BYTE UNIX Benchmarks (Version 5.1.3)

Test System Information

System: raspberrypi: GNU/Linux
OS: GNU/Linux -- 4.19.118-v7+ -- #1311 SMP Mon Apr 27 14:21:24 BST 2020
Machine: armv7l: unknown
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPUs: 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
Uptime: 23:16:05 up 1 day, 2:11, 2 users, load average: 0.00, 0.00, 0.07; runlevel 2020-06-05

Benchmark Run: 4 CPUs; 1 parallel process

Time: 23:16:05 - 23:44:04; 27m 59s

System Benchmarks

Test Score Unit Time Iters. Baseline Index
Dhrystone 2 using register variables 5173197.1 lps 10.0 s 7 116700.0 443.3
Double-Precision Whetstone 1430.1 MWIPS 9.7 s 7 55.0 260.0
Execl Throughput 883.9 lps 30.0 s 2 43.0 205.5
File Copy 1024 bufsize 2000 maxblocks 142819.6 KBps 30.0 s 2 3960.0 360.7
File Copy 256 bufsize 500 maxblocks 43274.2 KBps 30.0 s 2 1655.0 261.5
File Copy 4096 bufsize 8000 maxblocks 337429.5 KBps 30.0 s 2 5800.0 581.8
Pipe Throughput 281688.8 lps 10.0 s 7 12440.0 226.4
Pipe-based Context Switching 45913.1 lps 10.0 s 7 4000.0 114.8
Process Creation 2106.5 lps 30.0 s 2 126.0 167.2
Shell Scripts (1 concurrent) 1757.6 lpm 60.0 s 2 42.4 414.5
Shell Scripts (8 concurrent) 511.3 lpm 60.1 s 2 6.0 852.1
System Call Overhead 690392.9 lps 10.0 s 7 15000.0 460.3
System Benchmarks Index Score: 314.0

Benchmark Run: 4 CPUs; 4 parallel processes

Time: 23:44:04 - 00:12:11; 28m 07s

System Benchmarks

Test Score Unit Time Iters. Baseline Index
Dhrystone 2 using register variables 17680727.4 lps 10.0 s 7 116700.0 1515.1
Double-Precision Whetstone 4864.7 MWIPS 9.8 s 7 55.0 884.5
Execl Throughput 1908.4 lps 29.9 s 2 43.0 443.8
File Copy 1024 bufsize 2000 maxblocks 212820.4 KBps 30.0 s 2 3960.0 537.4
File Copy 256 bufsize 500 maxblocks 60151.4 KBps 30.0 s 2 1655.0 363.5
File Copy 4096 bufsize 8000 maxblocks 545417.9 KBps 30.0 s 2 5800.0 940.4
Pipe Throughput 964227.6 lps 10.0 s 7 12440.0 775.1
Pipe-based Context Switching 168143.6 lps 10.0 s 7 4000.0 420.4
Process Creation 3995.0 lps 30.0 s 2 126.0 317.1
Shell Scripts (1 concurrent) 4017.5 lpm 60.1 s 2 42.4 947.5
Shell Scripts (8 concurrent) 538.8 lpm 60.2 s 2 6.0 898.0
System Call Overhead 2281338.8 lps 10.0 s 7 15000.0 1520.9
System Benchmarks Index Score:703.1



インターネットで拾ってきた他人様の実行結果

環境running 1 parallel copy of testsrunning 4 parallel copy of tests
RPi3B+(GNU/Linux -- 4.19.118-v7+)3.0A314.0703.1
RPi3B+(GNU/Linux -- 4.14.34-v7+)2.0A308.1442.4
RPi3B+(GNU/Linux -- 4.14.34-v7+)3.0A355.8783.8
RPi3B+(?)2.1A303.5407.2
RPi3B+(GNU/Linux -- 4.19.80-v7l+)336.3867.2