Raspberry Pi の処理時間のさらなる短縮!

記事
IT・テクノロジー

Raspberry Pi の処理時間のさらなる短縮!

前回の投稿では、Raspberry Pi に直接ディスプレーを接続せずに、リモートデスクトップを利用すると処理時間が早くなるという話を紹介しました。その記事に関連して幾つかご質問を頂きましたので今日はそのご質問に答える形の記事にしてみました。実はもっと速く処理する方法がありました!


頂いたご質問の内容は?

前回の記事では、試したのが以下の三通りでした。

* Raspberry Pi に 1920x1080 の HD ディスプレーを 2 台接続して Vue の UI イメージを作成
* Raspberry Pi に 1920x1080 の HD ディスプレーを 1 台接続して Vue の UI イメージを作成
* Raspberry Pi にはディスプレーを接続せず、別の PC からリモートデスクトップを使って Vue の UI イメージを作成
いずれの場合も、Vue の GUI 版の Vue CLI を利用して、Web ブラウザの UI を利用して Vue の公開用のイメージを作成しました。 つまり、ディスプレーの条件以外は基本的に同じです。

一番短時間で処理ができたのは、三番目のリモートデスクトップから実行した例で、平均で約 48 秒でした。

この記事に関して「SSH」を利用してターミナルから実行したらどうなるの?というご質問でした。

SSH の場合、デスクトップ(GUI)は利用しない

とても、良い質問を頂いたと思います。SSH を利用して、別の PC から Raspberry Pi のシェルにアクセスして、Vue の公開用イメージを作成するコマンドを実行する場合、デスクトップの GUI を使わないのでより高速で処理できると予想されます。

実際は、デスクトップの GUI は OS 上では動いていますが、ディスプレーを接続せずに SSH で実行した場合は CPU の実行している仕事は少なくなるのは確実です。少なくても Web ブラウザを立ち上げる必要がない分、動いているプログラムも少なくなるという事になります。

SSH から実行すると、Web ブラウザを利用した UI を利用する事ができません。従って条件を揃えるために、幾つか追加で実験してみる事にしました。

1. 2 台のディスプレーを接続して、デスクトップのターミナルからイメージを作成
2. ディスプレーを接続せずに、リモートデスクトップのターミナルからイメージを作成
3. ディスプレーを接続せずに、別の PC から SSH でログインしてイメージを作成
これで有る程度比較ができます。

結果は?

コマンドラインからの実行なので、Linux の「time」コマンドを利用して実行時間を測定しました。 実行例です。

$ time npm run build
....
途中は省略しています
....

real 0m33.527s
user 1m10.617s
sys 0m5.009s
$
1. 2台のディスプレーを接続して、デスクトップのターミナルから実行:  36 秒
2. リモートデスクトップデスクトップから実行:  35 秒
3. SSH から実行:34 秒
でした。前回の UI を利用したイメージの作成に比べると余り差がないことがわかります。 また、実行時間は「real」の時間を示しています。これが実際に処理をスタートして終了するまでの時間です。

前回、もっとも速かったリモートデスクトップのデータと比べても約 10 秒速く処理が終了しています。

この結果からわかることは?
ターミナルから実行した場合、画面の書き換えは最小限になります。UI を利用する場合の方が、画面の書き換え量が多くなるので、そのオーバーヘッドが大きくなるため、処理時間に差が出ていると考えることができます。

ターミナルを利用する場合、ターミナル内のスクロール以外は画面の書き換えが必要ないので、CPU の処理時間は限定的になるため差が殆どないというのが結果です。 SSH から実行した場合が一番短時間で処理を終えていて、概ね 34 秒程度で処理できていることが確認できました。

処理能力に余裕のある PC を利用する場合、UI を利用できると操作も簡単で手軽なので便利です。 しかし、処理能力が限られている場合は、ターミナルのコマンドラインから実行した方が短時間で処理できるというのがデータから明らかになりました。昔のコンピュータがコマンドラインで操作していたのもこの結果を見ると納得ができます。 GUI を利用するには高い CPU の処理能力が必要ということです。

まとめ
コマンドラインからの実行は一昔前のコンピュータの利用方法です。しかし、Raspberry Pi のように処理能力に限外があるコンピュータを利用する場合、負荷の高くなる処理はコマンドラインから実行した方が、効率的に作業ができます。 昔のコンピュータがコマンドラインで利用されていた理由もこのあたりにあるのが見えてきます。もちろん、GUI などのインターフェースの技術は最近になって発達したものですが、アイディアはあっても当時の CPU では実行するのが難しいというのもなかなか普及できなかった理由の一つです。

このような実験をすると、コンピュータの性能を肌で感じることができるようになります。

実際にプログラムを書く場合でも、メモリや CPU の処理能力は無尽蔵にあるわけではなく、それらを効率的に利用するという意識を持ってプログラムを書いたほうが、より良いプログラムになります。

Raspberry Pi のように「リソース」が制限されたコンピュータを使ってみることで、そうした細かいところに目がいくようになります。

ワンランク上のエンジニアを目指す場合、Raspberry Pi で色々なプログラムを動かしてみると色々なことが見えてきます!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す