· 

Rpi3B+ vs Rpi4B 温度・消費電流・CPU%・クロック周波数

最終更新日:2023年11月18日

今年(2023年)の夏は猛暑だったためラズパイの熱暴走?を心配された方も多いと思います。室温31℃の状態でmoOde™ audio player(以下 Moode)で192k/24bitのハイレゾ音源を再生し、ラズパイ3B+と4Bの温度を比較しました。ついでにラズパイの消費電流とCPU使用率とクロック周波数も比較しました。

1. 温度

Raspberry Pi 3B+にヒートシンクを付けたもの(上写真の左)、Raspberry Pi 4Bにヒートシンクを付けたもの(上写真右)、Raspberry Pi 4Bにヒートシンクを付けないものの3種類のCPU温度(SoCのコア温度)を比較しました。いずれも室温31℃で、HiFiBerry DAC+ Pro(上写真中央)で再生し、HiFiBerry純正のプラスチックケース(下写真の左2つ)に入れて比較しました。これに加え、参考値としてAllo Boss2 Player(下写真の右)もCPU温度を測定しました。Allo Boss2 Playerはラズパイ基盤下部から熱伝導性シリコンパッドを通じてアルミケースに放熱するので、他とは条件が違います。DACも異なるためドライバーも異なります。

Moode7とMoode8ではCPU温度がかなり違うことに気づいたので、両方で測定しました。ただしラズパイ4B Rev1.5はDebian BusterベースのMoode7は動作しないので、BullseyeベースのMoode8だけでの測定になります。またAllo Boss2 DACはMoode8では再生できないのでMoode7だけの測定になります。そのためMoode7とMoode8の違いはラズパイ3B+で比較します。Moode7、Moode8とも64bit版ではなく32bit版を使用しました。CPU温度を測定した構成は以下の5種類になります。

CPU温度測定方法
CPU温度は以下のファイルから取得しました。

 /sys/class/thermal/thermal_zone0/temp

Moodeを起動後、すぐにLAN経由でNASから取得した192k/24bitのFLACファイルを60分間再生した後、再生を停止して60分間、合計120分間CPU温度測定を継続しました。予想では再生を停止するとCPU温度が下がると思ったのですが、そんなことはなく、いずれも温度は高止まりのままでした。高いと言っても最も高いヒートシンクなしのラズパイ4Bで最高温度67℃ですから、ラズパイの上限温度よりはかなり低いです。ラズパイの上限温度は85℃ですが、80℃に達するとthrottled backといってクロック周波数と電圧を下げて温度制御します。ラズパイ3にはsoft limitという機能があり60℃に達するとクロックを下げて温度管理をします。ラズパイ4は今のところsoft limitは定義されていません。詳細は下記をご覧ください。

 Frequency Management and Thermal Control

 

CPU温度測定結果

下のグラフが測定結果です。グラフの線色と上表の1から5の色が一致しています。平均温度とはFLAC再生後40分〜60分のCPU温度の平均値です。

  • ヒートシンクの効果(オレンジ線 vs 黄線):同じ4B Rev 1.5/Moode8で比較すると平均温度の差は2℃程度。効果は限定的です。
  • ラズパイ4Bと3B+の差(黄線 vs 緑線):同じMoode8で比較すると、4B Rev 1.5の方が3B+より平均温度が2.3℃高いです。
  • Moode8とMoode7の差(緑線 vs 茶線):同じ3B+で比較すると、Moode8の方がMoode7より5.3℃も高いです。
  • アルミケースへの放熱の効果(茶色線 vs 灰色線):同じMoode7で比較するとラズパイ4B Rev 1.4にもかかわらず3B+より6.5℃も低いので、かなりの効果があると思います。

DACが対応しているビットレート(通常は192k/24bit程度)以下のFLACを再生する限り、室温がかなり高く(31℃)ても、ラズパイの温度に関しては大して気にする必要はないことがわかりました。しかしMoode8の方がMoode7より5.3℃も高い理由は気になります。

2. 消費電流

消費電流で気になるのが最大電流(ACアダプタの容量が足りるか?)と、待機電力(24時間365日付けっぱなしにしたときの電気代)です。消費電流が多いので温度が上がるのでしょうから、CPU温度から電流は予想できます。予想通り3B+より4Bの方が少し大きく、Moode8の方がMoode7よりかなり大きいです。いずれも1A未満ですが、USB接続のHDDを接続しデータベースの再構築をすると、これより電流/電力を消費するでしょう。消費電流に関しても、Moode8の消費電流が大きい理由が気になります。

 待機電力は再生を停止した状態で1時間の消費電力を比較しました。さほど違いはありません。いずれも3Wh未満です。

3. CPU使用率

まずMPDプロセスのCPU使用率を見てみます。FLACを5分間再生し、その間のMPDのユーザープロセスのCPU使用率、カーネルのCPU使用率、プロセス全体のCPU使用率の平均値を測定しました(pidstatコマンド使用)。当然、CPUが非力な3B+の方が、4BよりもCPU使用率は高くなります。またハイレゾ(192k/24bit)の再生の方が、CD品質(44.1k/16bit)の再生よりも5倍ほどCPU使用率が高いですが、4つあるコアのうちひとつの10%も使用していません。MoodeでFLACを再生するだけでしたら、3B+でも十分な性能と言えるでしょう。

 Moode7よりMoode8の方がCPU温度が高く、消費電流・電力が大きいため、Moode8の方がCPU利用率も高いと予測したのですが、違いました。むしろMoode8の方がMoode7よりCPU使用率が低いです。

次はMPDプロセスだけでなく、FLAC再生中のRaspberry Pi OSのシステム全体のCPU使用率です(vmstatコマンド使用)。%Idleとはシステムのアイドル状態の割合です。MPDプロセスと傾向は同じで、3B+でも95%以上アイドル状態ですから、3B+で十分な性能と言えるでしょう。同じくMoode8の方がMoode7よりCPU使用率が低いです。なぜでしょう?

ちょっと本題から外れますが、この写真のようにラズパイにディスプレイを接続し、Moode8のLocal DisplayをONにするとChroniumが大量のCPUリソースを使用します。ラズパイ3では明らかに音質が劣化しました。測定しなくても耳で聞いてわかるレベルです。ラズパイ4では聴覚上は劣化を感じませんでしたが、CPU使用率は通常のWeb UIや、yaMPCのようなMPD Clientを使って再生する場合と比べて、桁違いに高くなります。

 

ラズパイ3ではX11とChroniumで80%近いCPU%を消費します。ラズパイ4で65%程度です。私は Moode Local Displayの使用を断念しましたが、Local Displayを使用するのであれば、ラズパイ3ではなくラズパイ4、しかもメモリ4GB以上がおすすめです。



4. クロック周波数

次に音楽再生中にラズパイが動作していた周波数を確認します。これは次のファイルで確認できます。

 /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

まず192k/24bitのFLACを再生開始し、time_in_stateのカウンターをリセットします。同じ曲を5分(300秒)再生した後にtime_in_stateをチェックした結果が下記のグラフです。Moode8は300秒のうち224秒(75%)は1.5GHzで動作していました。一方でMoode7は300秒のうち173秒(58%)は600MHzで動作していました。圧倒的にMoode8の方が高いクロック周波数で動作したことがわかります。このためCPU使用率が低くなり、消費電流が多くなり、その結果CPU温度が高くなったと考えられます。

もうひとつ同じくクロック周波数の比較ですが、別の見方のグラフを示します。192k/24bit FLACを再生中に5秒にいちど周波数を測定したものです。ご覧の通りMoode8では大半は1.5GHz、Moode7では半分程度は600Hzで動作していることがわかります。

Moode8とMoode7の違いは何でしょうか?クロック周波数の制御方法 Scaling Governorはどちらもondemandです。つまりCPU使用率等のリソース要求に応じてクロック周波数を上げ下げするモードです。Linuxカーネルの違い(Bullseeye 6.1とBuster 5.4)によりondemandのアルゴリズムが変わったのでしょうか?MPDのバージョンは、どちらも、ほぼ同じ(0.23.5と0.23.4)です。ラズパイ4BのRev 1.5と1.4の違いでしょうか?

 そこで同じラズパイ4B Rev 1.5で、LinuxカーネルとMPDのバージョンを変えて確認してみました。Moode7は4B Rev1.5では動作しませんが、Raspberry Pi OSには "Legacy"という4B Rev 1.5でも動作するBuster 5.10のディストリビューションがありますので、比較に使いました。Raspberry Pi OS LiteにMPDをインストールした環境では、3種類いずれも、Moode8のように高いクロック周波数を使う頻度は低いです。緑色のBullseye(1)がMoode8と同じLinux 6.1.21-v8+でMPD 0.23.5ですが、高い周波数は使わず、300秒のうち286秒(95%)は600MHzで動作していました。Moode8が高いクロック周波数を使うのは、LinuxとMPDのバージョンには関係ないことがわかりました。

ここで確認のため同じラズパイ4B Ver1.5で、Moode8と同じLinux 6.1.21-v8+とMPD 0.23.5のBullseye(1)と、Moode8の温度を比較しました。やはりMoode8の方が7℃ほど平均温度が高いです。

FLAC再生中に動作しているプロセスをtopコマンドで確認しても(下画像)、Moode8とBullseye(1)の違いはわかりませんでした。Moode8はPHPのWeb UIが動作している程度です。


最後に各種ディストリビューションによるクロック周波数の違いを比較します。Moode8の64bit版はラズパイ3でも4でも64bitカーネル(6.1.21-v8+)が起動します。一方でMoode8の32bit版ではラズパイ3は32bitカーネル(6.1.21-v7l+)、ラズパイ4ではなぜか64bitモデル(6.1.21-v8+)が起動します(カーネルは64bitですが、MPDなどのプロセスは32bitでした)。ただし/boot/config.txtに"arm_64bit=0"という項目を記入するとラズパイ4でも32bitカーネル(6.1.21-v7l+)が起動します。Moode 7 (32bit版)はラズパイ4でも32bitカーネル(6.1.21-v7l+))が起動します。Moodeはいずれにせよ64bitカーネルが起動すれば1.5GHz(ラズパイ4)または1.4GHz(ラズパイ3)までクロック周波数を上げて再生し、32bitカーネルが起動すれば600MHzで再生するようです。

 一方で素(す)のRaspberry Pi OSにMPDをインストールした場合は、ラズパイのモデルによらず、MPDによる192kハイレゾ再生程度の負荷では、600MHzのクロック周波数を使います。

 (*) uname -m:"print the machine hardware name."
    uname -r:"print the kernel release."

Moode8がなぜ高いクロック周波数を使うか?の原因究明はここで諦めます。しかし消費電流が増えCPU温度上がったかわりに、音質への影響はMoode8が有利になっている可能性があります。「音が良くなる」という話ではなく、CPU性能が上がることで音質への悪影響の可能性が下がるという意味です。例えば、先に述べたChroniumの負荷が音楽再生に悪影響を与える場合、クロック周波数が上りCPU性能が高くなった方が有利です。クロック周波数の違いはMoode8独自のチューニングの結果かも知れません。

5. 結論

  • ラズパイでMoodeだけを使用する限り、ラズパイ3でもラズパイ4でも発熱を気にする必要はない。
  • ヒートシンクの効果は限定的。必須ではないが、有った方が良い程度。
  • 消費電力の大きいローカルストレージを使わない限り、ラズパイ3もラズパイ4も給電は2Aもあれば十分。
  • FLACを再生する限り、ラズパイ3でもラズパイ4でもCPU使用率は非常に低い。
  • Moode8はFLAC再生中にクロック周波数が著しく高くなるため、それに応じて消費電流が大きくなるが1Aに満たない。待機電力に大きな違いはないので、実用上は気にするほどのことはない。Moode8は意図的にクロック周波数を上げている可能性がある。
  • 以上、FLACを再生する限り、Moode7でもMoode8でも、ラズパイ3でもラズパイ4でも、実用上は大きな違いはない。
  • ただしMoode Local Displayを使用する場合はラズパイ4をお勧めする。