もっと詳しく

Raspberry Pi に搭載されている RAM は、その一部を GPU へ割り当てる必要が有るものの、サーバ用途のような ヘッドレス 運用であれば、それほど多くを割り当てなくとも良さそう。現行モデルと比べ遥かに少ない512MBしか搭載されていない初代 Raspberry Pi を例に、 GPU への メモリ 割り当て量の設定方法と、動作に支障のない最小値を探ってみます。

raspi-configを使ったGPUメモリ値の設定

GPUメモリとして割当てる容量値は、ターミナルから管理者権限でraspi-configを使うことで、シンプルなGUIによる対話形式で設定することが可能です。

$ apt search raspi-config
Sorting... Done
Full Text Search... Done
raspi-config/oldstable,now 20210212 all [installed]
  Raspberry Pi configuration tool
rc-gui/oldstable 1.46 armhf
  raspi-config GUI

$ sudo raspi-config

ツールトップから、「4 Performance Options」に入ります。

図1.raspi-config 設定トップ

図1.raspi-config 設定トップ

オーバークロックの設定なども出来るこのPerformance Optionの中で、「P2 GPU Memory」を選択します。

図2.raspi-config Performance Options

図2.raspi-config Performance Options

GPUへ割り当てたいメモリ値をMB単位で入力します。おそらくOSとそのバージョンによって既定値はさまざまとは思いますが、このシステムでは64MBになっていました。

図3.raspi-config GPU メモリ値入力

図3.raspi-config GPU メモリ値入力

ツールトップまで戻って終了させると再起動を促され、次回再起動後に設定値が反映されます。ターミナルから次の要領で、現在のGPUメモリ割当て値を確認することができます。

$ vcgencmd get_mem gpu
gpu=32M

 

/boot/config.txtを直接編集して設定

実はraspi-configが編集しているのは、Raspberry Piが起動時にまず読み込む/boot/config.txtと言うテキストファイルです。管理者権限でテキストエディタから、変数名や設定値について分かっていれば直接編集した方が早いかもしれません。

$ sudo nano /boot/config.txt

gpu_mem=16

編集保存後、再起動することで新しい設定値がシステムに反映されます。

 

基本的なヘッドレス運用で支障のない最小メモリ値は

ディスプレイに接続しないヘッドレス運用では、GPUメモリを可能な限り小さく抑え、より多くをシステムリソースへ活かしたいものです。そこでまずは、上述のraspi-configで設定値の例に挙がっている中から最小の16MBに設定してみました。

するとシステムは全く問題なく稼働するのですが、

dmesg

コマンドで起動時のログを確認すると、見慣れないエントリが頻繁に挙がっています。

[Mon Dec  5 13:32:47 2021] bcm2835_mmal_vchiq: Failed to open VCHI service connection (status=-1)

調べてみると、Raspberry PiファームウェアのGitHubにおいてこのメッセージのことが挙がっていて、その中のこちらで解説されていました。

曰く、Raspberry Piは32MB以上のGPUメモリで初めて、GPUが

start.elf

 をフル仕様で読み、GPUメモリがそれに満たない場合は一部機能をオミットするよう振る舞うとのことで、上記メッセージはそのオミットされた機能によるものでした。

試しにGPUメモリの値を32MBに設定して再起動すると、確かに起動時のログからこのメッセージは消えたので、GPUメモリの最小割当て値は32MBということになると判断しました。

もちろん、MIPI CSI-2を通じてカメラを接続したり、ffmpegを使った画像処理を走らせたいといった用途では、適宜割当てを増やす必要がありそうですが、その辺りの検証はまた別の機会に。

 

 

投稿 ヘッドレス運用Raspberry PiのGPUメモリgpu_mem設定値Fun Scripting 2.0 に最初に表示されました。