はじめに
Jetson Nanoの各種記事を読むとコンパイル前にjetson_clocks
コマンドでパフォーマンスを最大化してから行っている。そもそもこのコマンドが何をしているのか気になったので調べた。
コマンドラインのヘルプ
ヘルプを見る限り、CPUとGPUとEMC(External Memory Controller)のクロックを変更できるようだ。
yamamo-to@jetson-nano:~$ /usr/bin/jetson_clocks -h
Maximize jetson performance by setting static max frequency to CPU, GPU and EMC clocks.
Usage:
jetson_clocks.sh [options]
options,
--show display current settings
--store [file] store current settings to a file (default: ${HOME}/l4t_dfs.conf)
--restore [file] restore saved settings from a file (default: ${HOME}/l4t_dfs.conf)
run jetson_clocks.sh without any option to set static max frequency to CPU, GPU and EMC clocks.
現在の設定は--show
オプションで表示とのことなので、sudoをつけた上で実施した。
yamamo-to@jetson-nano:~$ sudo /usr/bin/jetson_clocks --show
[sudo] password for yamamo-to:
SOC family:tegra210 Machine:jetson-nano
Online CPUs: 0-3
CPU Cluster Switching: Disabled
cpu0: Online=1 Governor=schedutil MinFreq=1428000 MaxFreq=1428000 CurrentFreq=1428000 IdleStates: WFI=0 c7=0
cpu1: Online=1 Governor=schedutil MinFreq=1428000 MaxFreq=1428000 CurrentFreq=1428000 IdleStates: WFI=0 c7=0
cpu2: Online=1 Governor=schedutil MinFreq=1428000 MaxFreq=1428000 CurrentFreq=1428000 IdleStates: WFI=0 c7=0
cpu3: Online=1 Governor=schedutil MinFreq=1428000 MaxFreq=1428000 CurrentFreq=1428000 IdleStates: WFI=0 c7=0
GPU MinFreq=76800000 MaxFreq=921600000 CurrentFreq=76800000
EMC MinFreq=204000000 MaxFreq=1600000000 CurrentFreq=1600000000 FreqOverride=0
Fan: speed=80
NV Power Mode: MAXN
スクリプトの内容
このファイルは単なるシェルスクリプトなので中身を確認できる。およそ402行目から408行目にヒントが書かれている。
do_hotplug
do_clusterswitch
do_cpu
do_gpu
do_emc
do_fan
do_nvpmodel
最初にSOCファミリー(Jetson nanoはtegra210)を環境変数にセットした後、上記項目を一つずつ実行する。
- hotplugはCPUホットプラグのことで使えるCPUを全部使うようにする
- clusterswitchはディレクトリ
/sys/kernel/cluster/
の有無を確認した上でアクティブなクラスタが利用可能ならばEnableにする - cpuは動的に変わる周波数の最小値を最大周波数(1.36GHz)に変更する
- gpuは最初にrail_gate_enableに0を書き込みクロックゲーティングを無効にし1、CPU同様最小駆動周波数を最大値まで引き上げる
- EMCクロックの最小駆動周波数を最大値まで引き上げる
- FANスピードを最大(255)にする
- nvpmodelは何もしない2
まとめ
jetson_clocks
コマンドはCPUやクラスタなど使えるものはすべて使える状態にした上で、各種動作周波数を最大まで上げるコマンドのようだ。