Raspberry Pi を高速化する裏技!

記事
IT・テクノロジー

Raspberry Pi を高速化する裏技!

同じ Raspberry Pi を使う場合、性能は変わらないと思っていませんか?実は、同じ Raspberry Pi でも使い方によって性能が変わります。言い換えると、Raspberry Pi を高速化する裏技があります。この記事では Raspberry Pi を高速化する裏技を紹介します!


性能を決めるのは CPU の処理能力

コンピュータの性能を決める一番の要因をご存知ですか?

基本的には、CPU の処理能力で決まります。 ところが、同じ CPU を使っている場合でも、CPU の処理能力は変わってきます。

理由は簡単で、CPU が処理している仕事の量が変われば、同じ仕事の処理時間を測った場合でも違いが出てくると言うことです。 例えば、同じ PC でも利用する OS が違うと同じ処理でも処理時間が変わってきます。


Web の開発に利用するアプリは、Linux でも Windows でも動作します。 例えば、フロントエンドのフレームワークの Vue の開発環境は Linux でも Windows でも基本的に同じような設定が可能です。 同じ設定(同じアプリを利用する場合)でも、実際に実行しているプログラムは同じ物ではないので差が出るのは当たり前ですが、実はそれ以外にも差が出る要素があります。

それは、裏で動いている OS の仕事は、Windows と Linux では全く違います。実際に動かすプログラム以前に、OS 上で動いているプログラムが違うので、その処理を行っている CPU の負荷も違っています。以前実験した結果では、同じ、Vue で開発したフロントエンドのイメージ作成時間は Linux の方が若干、良い結果が出ました。

要は、Linux の方がより、効率的に CPU を使っていると考えられるということです。

この実験は少し前に行ったので正確な数値を覚えていませんので、今回は実際に Raspberry Pi で処理時間を測ってみて、処理時間に違いが出るという事例を紹介したいと思います。

Raspberry Pi で動く Ubuntu 上で比較する!

今回の実験では、同じハードウエア、同じ OS を使います。ハードウエアは、Raspberry Pi4 の、8 GB メモリ、128 GB ストレージのモデルです。利用する OS は、Ubuntu 21.04 デスクトップ版(ARM64)を使いました。

先程の例では、違う OS の場合、全く違うプログラムが動いているので、CPU がどれ位忙しいかに違いが出ているので処理時間が変わっていると言う例でした。今回の実験はもう少し公平な条件でやってみる事にしました。


そこで、利用する OS は全く同じ物、利用するハードウエアも同じもの、実行するプログラムも同じものと言う条件でやってみました。

実行するプログラムは、Vue で作成した、フロントエンドの UI の公開用イメージを作成する処理です。実際にかかった公開用イメージを作成する時間で比較します。

* 同じ OS:Ubuntu 21.04 Desktop (ARM64)
* Raspberry Pi4 8GB メモリ、128GB ストレージ
* Vue UI で公開用イメージの作成
は全て同じ条件です。測定も、同じ条件で3回行いました。

一見、違いは出ないように見えますが、最大 30%程度の差が出る事がわかりました!

何を変えたのか?

では、何が違うか気になると思います。 変えたのは、接続する「ディスプレー」です。

意外かもしれませんが、実は、これが Raspberry Pi を高速化する裏技です。

Raspberry Pi4 は二つのディスプレーを接続することができます。

今回試した組み合わせは以下の三つです

* 1920 x 1080 の HD ディスプレーを二つ
* 1920 x 1080 の HD ディスプレーを一つ
* ディスプレーを接続しない
これで、どの組み合わせが一番良い結果が出たと思いますか?

ちょっと考えてみてください。

一番良い結果が出たのは、「ディスプレーを接続しない」場合でした。

* ディスプレーを二つ:平均で 63 秒、最大メモリ使用量(システム全体)は、3.4GB
* ディスプレーを一つ:平均で 59 秒、最大メモリ使用量(システム全体)は、3.1GB
* ディスプレーなし :平均で 48 秒、最大メモリ使用量(システム全体)は、3.2GB
と言う結果です。

ディスプレーなしでは、別のコンピュータ(別の Linux/Ubuntu のコンピュータ)からネットワーク経由でリモートデスクトップを使ってアクセスして処理を実行しています。

そうなんです、ディスプレーを外して、別のコンピュータから Raspberry Pi を使うと、最大性能を引き出せるのです! ご存知でしたか?

これが今回紹介する裏技です!

何故速くなるのか?
ところで、どうして、ディスプレーを繋がないと速くなるのか気になりますよね?

メモリの使用量が一番少ないのは、ディスプレーを一つ繋いだ場合です。しかし、処理時間は一番良いわけでは、ありません。 この場合は、メモリの使用量は余り性能には影響しないと言う事です。

この Raspberry Pi は、8GB のメモリがあるため、まだまだ余裕の状態だからです。メモリが足りなくなると、すぐに使わないデータは、ディスクドライブ(ストレージ)に一時的に退避させて、使えるメモリを確保して処理を行います。このような処理を「スワップ」と呼んでいますが、今回のケースではこのスワップは発生していません。なので、メモリの使用量では殆ど処理時間に違いは出ません。

一番の原因は、CPU が処理している量がディスプレーを接続した場合には増えると言うのが原因です。 ディスプレーにデータを表示させるには、ディスプレーのポートに CPU が表示するデータを書き込むための処理が必要になります。当然ですが、ディスプレーが二つ繋がれている場合、その書き込みは約2倍になります。これが、ディスプレーを二つ接続すると処理が遅くなる原因です。ディスプレーを繋がない場合は、表示情報をネットワーク経由で別の PC に送る処理が必要ですが、この処理の方が、ディスプレーに書くよりは負担が少ないと言うのが今回の処理時間の差になっています。

リモートデスクトップでは、ネットワークのデータ転送量を抑えるために、最小限のデータのみを送るように工夫されています。 これが、処理時間に差が出る大きな理由です。ちなみに、別の PC で表示している解像度は、ディスプレーと同じ(1920x1080)で同じにしています。

まとめ
Raspberry Pi に限った事ではありませんが、コンピュータの処理時間は、利用する条件が変わると、同じハードウエア、同じ OS で同じデータの処理をしても処理時間が変わってきます。

Raspberry Pi は、別の記事で紹介した通り、最新の PC に比べると処理能力はやや劣ります。しかし、同じハードウエアでも、使い方を工夫すると性能は変わってきます。今回紹介した例では、ディスプレーを接続せずにネットワーク経由で利用することで、Vue の公開用のイメージを短縮する事が可能になる例を紹介しました。


もちろん、対象となる処理によって、必要とする性能が変わってくるので、ディスプレーを繋がないのが良いという事ではありませんが、CPU の処理能力を上げるには、CPU の処理する仕事を減らしてあげれば必要な仕事をより効率的に処理できると言うのがポイントです。

CPU の処理能力が余り関係ない例では、ディスプレーを接続しても余り影響がない場合もあります。

しかし、求める性能は、具体的に何が重要かがわかるとそれを上手く処理する方法が見つかる場合もたくさんあります。

Raspberry Pi はそうした、システムの処理を理解するための実験が簡単にできるコンピュータです!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す