Jetson nanoの消費電力計測と電力制御
はじめに
Jetson nanoはMaxwell世代のGPUと4コアのARM Cortex-A57、 4GBのLPDDR4を搭載したシングルボードコンピュータであ る。Raspberry Pi 3Bと比較するとメモリ容量は4倍であり、 GPU性能も優れている。また、Jetson nanoはIoT機器、 自律ロボットなどのバッテリーを使用する機器への搭載が想定され ており、 優れた電源管理機能が搭載さてている点も着目すべき点である。 電源管理機能をうまく利用できれば、 IoT機器などのバッテリー寿命を伸ばすことができる。そこで、 本記事ではJetson nanoの電源管理機能について示し、電源制御を行った際の消費電力計測を行った。
Jetson nanoの電源管理機能
Jetson nanoは4コアCPUとGPUが搭載されており、 CPUやGPUの周波数を下げることによって、 消費する電力を抑えることができる。 CPUやGPUは負荷に応じて自動的に周波数を変更することによ って消費電力を抑えている。更に、 4つあるCPUコアのうち一部のコアを無効にし、消費電力を抑える 機能も搭載されている。これらのCPUやGPUの周波数、 有効なCPUコア数は電源を入れた状態でも変更が可能であり、 これらの設定を変えた場合の消費電力の計測を行う。また、 今回はCPUコアのみに着目する。
外部コネクタからの電源供給
Jetson nanoへの電源供給は、Micro-

10Wモードと5Wモードの切り替え
Jetson nanoは予め2つの電力モードを提供している。 デフォルトでは10Wモードとなっている。 デフォルトの10Wモードでは、 4つのCPUコアすべてを有効にし、 CPUの動作周波数も高めに設定されている。10WモードのCPUの最大動作周波数1. 43GHzである。また、 5Wモードでは4つのCPUコアのうち、 2つのみを有効にし設定周波数は低めに設定されている。 5Wモード時のCPUの最大動作周波数は921. 6MHzである。
電力モードの確認や設定にはnvpmodelコマンドを利用する
sudo nvpmodel -q
とコマンドを打ち込む。電源制御には特権レベルの操作が必要であるためsudoをつける。
NV Power Mode: MAXN
0
と表示され、10Wモード(=MAXN)であることがわかる。さらに、有効なコア数、動作周波数の確認にはjetson_ clocks コマンドを用いる。
sudo jetson_clocks --show
とタイプすると、図のように現在のCPU等の情報が表示される。

それでは、5Wモードへの切り替えを行う。切り替えは、
sudo nvpmodel -m 1
とタイプする。- mオプションを利用することで電力モードの指定を行う。5Wモードの際は1を指定し、10Wモードに変更を行う際は0を指定する。5Wモードに変更したので、再度CPUの状態を確認する。すると、図のようにcpu0とcpu1の2つのみがOnlineとなっている。また、MaxFreq=921600となっていることから、最大動作周波数は921.6Mhzとなっていることがわかる。

オリジナル電力プロファイルの追加
これまで述べたようにJetson nanoは10Wモードと5Wモードの2つのモードをサポートしている。そこで、新しくオリジナル電力プロファイルを追加することとする。
“また、本内容はJetson nanoが起動しなくなるだけでなく、Jetson nanoを物理的に破壊する可能性がある。一切の責任を負いかねるので、ご注意願いたい。”
今回は、1コア、最高周波数1.43Ghの1core-highモードを追加する。電力のプロファイル情報は/etc/nvpmodel.confに保存されている。そこで、下記の内容を/etc/nvpmodel.confの109行目に追加する。モードの番号を2, モード名前を1core-highとした。
< POWER_MODEL ID=2 NAME=1core-high >
CPU_ONLINE CORE_0 1
CPU_ONLINE CORE_1 0
CPU_ONLINE CORE_2 0
CPU_ONLINE CORE_3 0
CPU_A57 MIN_FREQ 0
CPU_A57 MAX_FREQ -1
GPU_POWER_CONTROL_ENABLE GPU_PWR_CNTL_EN on
GPU MIN_FREQ 0
GPU MAX_FREQ 640000000
GPU_POWER_CONTROL_DISABLE GPU_PWR_CNTL_DIS auto
EMC MAX_FREQ 1600000000
電力計測
opensshのRSA4096を実行した際の消費電力を計測した。具体的には、
openssl speed rsa4096
とタイプした際の電力を計測した。また、有効なCPUコアの数だけ上記コマンドを同時に実行し、すべての有効なCPUが利用されるようにした。計測時は余計な電力消費を抑えるために、HDMIやDisplay port等の画面出力、USBデバイスをすべて取り外した。有線LANのみ接続し、ssh経由でJetsonへログインし計測を行った。
消費電力 | |
アイドル時 | 1.33W |
10Wモード | 4.18W |
5Wモード | 2.58W |
1core-highモード | 2.54W |
アイドル時の消費電力は1.33Wであり、Linuxが動作し4Kをサポートするシングルボードコンピュータと考えるならば、非常に省電力である。10Wモードでは4.18Wの消費電力となった。5Wモードにすると大きく消費電力が低下した。また、新たに追加を行った1core-highと5Wモードを比較したところ、わずかに1core-highモードが低い消費電力となった。
今回はCPUに注目したが、次回はGPU部分の計測を行う予定である。