ラズベリーパイの電源は一応スマートフォンの電源などでも動作します。
しかし、電源不足・不安定な場合はラズパイのスペックが著しくダウンします。
実際に電源の違いでどれほどの性能差が出るのかベンチマークしてみました。
ラズパイの電源が不安定な場合は?CPU性能への影響を確認してみた!
結論から言いますと、電源が不安定・不足の場合はラズパイのCPU性能が約1/3に落ちました。
ラズベリーパイ4で安定/不安定の状態でベンチマーク評価を行いました。
安定したラズパイ専用電源だとベンチマークソフト(Unixbench)のスコア値は「796.8」でした
適当なスマートフォンの電源を使った場合のスコア値は「284.9」となりました。
ラズパイ専用電源の時と比べて不安定な電源の場合、約1/3のCPU性能値に落ちています。
なぜこのような結果になったが調査すると…
不安定な電源だとラズパイの最大CPUクロック1500MHzが維持できていませんでした。
下グラフは負荷時のCPU周波数(クロック)をプロットしたものです。
電源が安定/不安定の場合でCPUクロックを比較した動画が下記です。
動画だとCPUクロックが維持できていないことが分かりやすいです。ぜひご覧ください。
実際にテストした結果、また詳細の方法・プログラムまで説明していきます。
Raspberry Pi 4で消費電力は上がっている
最初に最新のラズパイ4の消費電流・電力は従来比で増えていることを簡単に紹介します。
詳細の記事リンク先はこちらです。
ラズベリーパイ4Bのアイドル時の消費電流は約600~700mAでした。
前世代の3B+、古い1Bのラズパイと比べて消費電流は増加傾向があります。(4B>3B+>1B)
ラズパイの電源不足していると落ちる
最近のラズパイはスペックが向上している分、安定した電源がより必要になっています。
筆者の場合ですが、ラズベリーパイ4で性能が怪しい電源(格安の1A程度の電源)を使うと…
立ち上げ時に強制シャットダウンする場合もありました。(最初の画面が繰り返し表示されていた)
スマートフォン用の電源でもラズベリーパイをある程度動作できるものもあります。
しかし、最大性能を引き出したい場合はラズパイの専用電源の利用をおすすめします。
ラズベリーパイのCPU負荷のテストを行う
ラズパイのCPU負荷テストに関しては定番のベンチマークソフト「UnixBench」を利用します。
Unixbenchの詳細に関しては、既にネットに多くの記事が有りますので省略します。
ラズパイ専用電源でCPU負荷のテストを行った場合
最新ラズベリーパイはマルチコアですので、今回はマルチコアの結果に注視して紹介します。
「安定した電源のラズパイ専用電源」のUnixbenchのスコア値は「796.8」でした。
マルチコアのベンチマーク結果を貼り付けておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
4 CPUs in system; running 4 parallel copies of tests Dhrystone 2 using register variables 39808409.1 lps (10.0 s, 7 samples) Double-Precision Whetstone 9198.1 MWIPS (9.6 s, 7 samples) Execl Throughput 2484.9 lps (29.9 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 199665.2 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 56018.2 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 589390.5 KBps (30.0 s, 2 samples) Pipe Throughput 485579.2 lps (10.0 s, 7 samples) Pipe-based Context Switching 179180.3 lps (10.0 s, 7 samples) Process Creation 4514.3 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 5334.5 lpm (60.1 s, 2 samples) Shell Scripts (8 concurrent) 729.8 lpm (60.2 s, 2 samples) System Call Overhead 1791338.3 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 39808409.1 3411.2 Double-Precision Whetstone 55.0 9198.1 1672.4 Execl Throughput 43.0 2484.9 577.9 File Copy 1024 bufsize 2000 maxblocks 3960.0 199665.2 504.2 File Copy 256 bufsize 500 maxblocks 1655.0 56018.2 338.5 File Copy 4096 bufsize 8000 maxblocks 5800.0 589390.5 1016.2 Pipe Throughput 12440.0 485579.2 390.3 Pipe-based Context Switching 4000.0 179180.3 448.0 Process Creation 126.0 4514.3 358.3 Shell Scripts (1 concurrent) 42.4 5334.5 1258.1 Shell Scripts (8 concurrent) 6.0 729.8 1216.4 System Call Overhead 15000.0 1791338.3 1194.2 ======== System Benchmarks Index Score 796.8 |
スマートフォンの電源でCPU負荷のテストを行った場合
「(不安定?の電源の)スマートフォンの電源」のUnixbenchのスコア値は「284.9」でした。
ベンチマーク結果は不安定の電源ではラズパイのCPU性能が約1/3に落ちました。
マルチコアのベンチマーク結果を貼り付けておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
4 CPUs in system; running 4 parallel copies of tests Dhrystone 2 using register variables 14655478.3 lps (10.0 s, 7 samples) Double-Precision Whetstone 3333.0 MWIPS (9.8 s, 7 samples) Execl Throughput 891.7 lps (29.9 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 68571.0 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 18858.4 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 220939.1 KBps (30.0 s, 2 samples) Pipe Throughput 179790.4 lps (10.0 s, 7 samples) Pipe-based Context Switching 59817.4 lps (10.0 s, 7 samples) Process Creation 1614.6 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 1946.1 lpm (60.1 s, 2 samples) Shell Scripts (8 concurrent) 258.9 lpm (60.2 s, 2 samples) System Call Overhead 659037.2 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 14655478.3 1255.8 Double-Precision Whetstone 55.0 3333.0 606.0 Execl Throughput 43.0 891.7 207.4 File Copy 1024 bufsize 2000 maxblocks 3960.0 68571.0 173.2 File Copy 256 bufsize 500 maxblocks 1655.0 18858.4 113.9 File Copy 4096 bufsize 8000 maxblocks 5800.0 220939.1 380.9 Pipe Throughput 12440.0 179790.4 144.5 Pipe-based Context Switching 4000.0 59817.4 149.5 Process Creation 126.0 1614.6 128.1 Shell Scripts (1 concurrent) 42.4 1946.1 459.0 Shell Scripts (8 concurrent) 6.0 258.9 431.5 System Call Overhead 15000.0 659037.2 439.4 ======== System Benchmarks Index Score 284.9 |
ラズベリーパイのCPUクロックと性能比較
基本的にCPU周波数(クロック)が高いほどCPU性能が上がり、ベンチマークの値も良くなります。
不安定な電源の場合、ラズベリーパイのCPUクロックがどうなっているのか調査します。
ラズベリーパイのCPU周波数(クロック)を確認する
現在のラズパイのCPUクロックは下記コマンドで調べることが可能です。
基本ラズベリーパイ4の無負荷時のクロックは「600MHz」です。
ラズベリーパイ4ではCPU負荷が掛かると(デフォルト設定の場合)自動的に1500MHzまでクロックが上がります。
(下記例の場合はPythonのプログラムを実行してCPUに負荷を掛けています)
そのためCPUに負荷が掛かり続ければクロックは1500MHzが維持されるはずです。
ラズパイのCPUのクロック設定の確認方法
ラズパイのCPUのクロックを可変/固定を確認・変更したい場合は「cpufrequtils」が便利です。
記コマンドでインストールできます
「cpufrequtils」をインストールすれば、現在の設定状態を下記コマンドで確認できます。
筆者のラズパイ4では「ondemand」になっており、この状態でテストを実施しました。
Raspberry PiのCPUクロックのグラフをPythonで描いてみた
実際のCPUクロックが1500MHzが維持されるかを確認します。
「安定したラズパイ専用電源」と「適当なスマートフォンの充電器」で調査しました。
PythonのプログラムでCPU周波数を定期的に確認します。プログラムは後述します。
安定した電源のCPUクロックのグラフ
ラズパイの専用電源、つまり「安定した電源」の場合のテスト結果です。
負荷を掛けるとCPUクロックが1500MHzが維持されました。OKです。
不安定な電源のCPUクロックのグラフ
適当なスマートフォンの電源、「不安定な電源」のテスト結果です。
負荷を掛けるとCPUクロックが1500MHz維持できず600MHzまで落ちています。
不安定の電源でベンチマーク値が低いのは、CPUクロックが維持できていないことが影響大のようです。
電源が安定/不安定を比較したテスト動画
テスト動画が下記となります。
実際にCPUクロックが変動している様子が分かりやすいです。ぜひご覧ください。
Pythonのプログラム
今回使ったPythonのプログラムは下記となります。
CPUクロックを調べるコマンドを1秒置きに実施して、リアルタイムでグラフを描くプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import itertools import math import numpy as np from matplotlib import pyplot as plt from matplotlib import animation from subprocess import getoutput def _update(frame, x, y): """グラフを更新するための関数""" # 現在のグラフを消去する plt.cla() # データを更新 (追加) する x.append(frame) # CPUクロックを取得する temp = getoutput('vcgencmd measure_clock arm') temp2 = temp.split('=') y.append(int(temp2[1])/10**6) # 折れ線グラフを再描画する plt.plot(x, y) # グラフのタイトルにCPUクロックを表示する plt.title("CPUclk = "+ str(y[-1]) +" MHz") # グラフにCPUクロック上限の1500MHzに補助線(赤点線)を引く p = plt.plot([0, x[-1]],[1500, 1500], "red", linestyle='dashed') # グラフの縦軸_CPUクロックの範囲を指定する plt.ylim(0,2000) def main(): # 描画領域 fig = plt.figure(figsize=(10, 6)) # 描画するデータ x = [] y = [] params = { 'fig': fig, 'func': _update, # グラフを更新する関数 'fargs': (x, y), # 関数の引数 (フレーム番号を除く) 'interval': 1000, # 更新間隔 (ミリ秒) 'frames': itertools.count(0, 0.1), # フレーム番号を無限に生成するイテレータ } anime = animation.FuncAnimation(**params) # グラフを表示する plt.show() if __name__ == '__main__': main() |
以前に下記記事でCPU温度をリアルタイムでプロットしたプログラムを応用したものとなります。
まとめ・感想
今回の記事をまとめますと以下です。
⇒ラズベリーパイの性能に大きく影響する
ラズパイでCPU負荷を掛ける場合には電源に気を付けましょう。
可能であればラズパイの専用電源を用意した方が無難そうです。
コメント
雷マークが出て、low battery alarmが出て電源をチェックしろってうるさくいってくる。
警告メッセージを出さないようにするためのconfig.confの設定の記述もネットにあったけど、MSG消せばいいってもんじゃないよね。5V-2.4A急速充電用のUSBアダプターを試しましたが結果は同じでした。やっぱり5V-3Aの容量が必要ですね。
そうかなと思っていたが、やっぱりクロックスピードも落ちるんですね。たぶんCPUの温度が高温になってもそうなんだろうな。
でもクロックスピードは一定でなくコンピュータの状態で変化するって勉強になりました。