ラズパイの電源が不安定な場合は?CPU性能への影響を確認してみた!

本サイトはアフィリエイト広告を利用しています。
ラズベリーパイ(raspberry pi)

ラズベリーパイの電源は一応スマートフォンの電源などでも動作します。

しかし、電源不足・不安定な場合はラズパイのスペックが著しくダウンします。

実際に電源の違いでどれほどの性能差が出るのかベンチマークしてみました。

 

スポンサーリンク

ラズパイの電源が不安定な場合は?CPU性能への影響を確認してみた!

結論から言いますと、電源が不安定・不足の場合はラズパイのCPU性能が約1/3に落ちました。

 

ラズベリーパイ4で安定/不安定の状態でベンチマーク評価を行いました。

 

安定したラズパイ専用電源だとベンチマークソフト(Unixbench)のスコア値は「796.8」でした

 

適当なスマートフォンの電源を使った場合のスコア値は「284.9」となりました。

ラズパイ専用電源の時と比べて不安定な電源の場合、約1/3のCPU性能値に落ちています。

 

なぜこのような結果になったが調査すると…

不安定な電源だとラズパイの最大CPUクロック1500MHzが維持できていませんでした。

下グラフは負荷時のCPU周波数(クロック)をプロットしたものです。

 

電源が安定/不安定の場合でCPUクロックを比較した動画が下記です。

動画だとCPUクロックが維持できていないことが分かりやすいです。ぜひご覧ください。

 

実際にテストした結果、また詳細の方法・プログラムまで説明していきます。

 

Raspberry Pi 4で消費電力は上がっている

最初に最新のラズパイ4の消費電流・電力は従来比で増えていることを簡単に紹介します。

詳細の記事リンク先はこちらです。

ラズベリーパイの電源のおすすめは?USBの電流を測定してみた
ラズベリーパイに必要な電源スペックを測定してみました。「専用の電源アダプタは必要なのか」「PCからのUSB給電で十分なのか」含めて確認しています。ラズパイの専用電源が本当に必要か迷っている方におすすめな記事となっています.ラズパイの電源のお...

 

ラズベリーパイ4Bのアイドル時の消費電流は約600~700mAでした。

 

前世代の3B+、古い1Bのラズパイと比べて消費電流は増加傾向があります。(4B>3B+>1B)

 

ラズパイの電源不足していると落ちる

最近のラズパイはスペックが向上している分、安定した電源がより必要になっています。

筆者の場合ですが、ラズベリーパイ4で性能が怪しい電源(格安の1A程度の電源)を使うと…

 

立ち上げ時に強制シャットダウンする場合もありました。(最初の画面が繰り返し表示されていた)

 

スマートフォン用の電源でもラズベリーパイをある程度動作できるものもあります。

しかし、最大性能を引き出したい場合はラズパイの専用電源の利用をおすすめします。

 

ラズベリーパイのCPU負荷のテストを行う

ラズパイのCPU負荷テストに関しては定番のベンチマークソフト「UnixBench」を利用します。

 

Unixbenchの詳細に関しては、既にネットに多くの記事が有りますので省略します。

 

ラズパイ専用電源でCPU負荷のテストを行った場合

最新ラズベリーパイはマルチコアですので、今回はマルチコアの結果に注視して紹介します。

「安定した電源のラズパイ専用電源」のUnixbenchのスコア値は「796.8」でした。

 

マルチコアのベンチマーク結果を貼り付けておきます。

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に落ちました。

 

マルチコアのベンチマーク結果を貼り付けておきます。

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クロックは下記コマンドで調べることが可能です。

vcgencmd measure_clock arm

 

基本ラズベリーパイ4の無負荷時のクロックは「600MHz」です。

 

ラズベリーパイ4ではCPU負荷が掛かると(デフォルト設定の場合)自動的に1500MHzまでクロックが上がります。

(下記例の場合はPythonのプログラムを実行してCPUに負荷を掛けています)

 

そのためCPUに負荷が掛かり続ければクロックは1500MHzが維持されるはずです。

 

ラズパイのCPUのクロック設定の確認方法

ラズパイのCPUのクロックを可変/固定を確認・変更したい場合は「cpufrequtils」が便利です。

 

記コマンドでインストールできます

sudo apt install cpufrequtils

 

「cpufrequtils」をインストールすれば、現在の設定状態を下記コマンドで確認できます。

cpufreq-info

 

筆者のラズパイ4では「ondemand」になっており、この状態でテストを実施しました。

 

Raspberry PiのCPUクロックのグラフをPythonで描いてみた

実際のCPUクロックが1500MHzが維持されるかを確認します。

「安定したラズパイ専用電源」と「適当なスマートフォンの充電器」で調査しました。

 

PythonのプログラムでCPU周波数を定期的に確認します。プログラムは後述します。

 

安定した電源のCPUクロックのグラフ

ラズパイの専用電源、つまり「安定した電源」の場合のテスト結果です。

 

負荷を掛けるとCPUクロックが1500MHzが維持されました。OKです。

 

不安定な電源のCPUクロックのグラフ

適当なスマートフォンの電源、「不安定な電源」のテスト結果です。

 

負荷を掛けるとCPUクロックが1500MHz維持できず600MHzまで落ちています。

 

不安定の電源でベンチマーク値が低いのは、CPUクロックが維持できていないことが影響大のようです。

 

電源が安定/不安定を比較したテスト動画

テスト動画が下記となります。

実際にCPUクロックが変動している様子が分かりやすいです。ぜひご覧ください。

 

Pythonのプログラム

今回使ったPythonのプログラムは下記となります。

CPUクロックを調べるコマンドを1秒置きに実施して、リアルタイムでグラフを描くプログラムです。

#!/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温度をリアルタイムでプロットしたプログラムを応用したものとなります。

ラズベリーパイのヒートシンクの効果は?ファンまで必要かを検証!
発熱が不安なラズパイ4のCPU温度を測定して「ヒートシンクの効果」「ファンまで必要なのか」を検証してみました。これからラズパイを購入する方のために何処までCPUの発熱対策のパーツを購入するべきなのかを紹介します。ラズベリーパイのヒートシンク...

 

まとめ・感想

今回の記事をまとめますと以下です。

電源が不安定だとラズパイの最大CPUクロックを維持できないケースがある
⇒ラズベリーパイの性能に大きく影響する

 

ラズパイでCPU負荷を掛ける場合には電源に気を付けましょう。

可能であればラズパイの専用電源を用意した方が無難そうです。

コメント

  1. seri3s より:

    雷マークが出て、low battery alarmが出て電源をチェックしろってうるさくいってくる。
    警告メッセージを出さないようにするためのconfig.confの設定の記述もネットにあったけど、MSG消せばいいってもんじゃないよね。5V-2.4A急速充電用のUSBアダプターを試しましたが結果は同じでした。やっぱり5V-3Aの容量が必要ですね。
    そうかなと思っていたが、やっぱりクロックスピードも落ちるんですね。たぶんCPUの温度が高温になってもそうなんだろうな。
    でもクロックスピードは一定でなくコンピュータの状態で変化するって勉強になりました。