ちょっとハマったのでメモ。
Ubuntu で NVIDIA の GPU を、X を使用しない状態(headless)で動かしているときにファンコントロールをする方法。
何も考えないで nvidia-settings を使うとエラーになってしまう。
cluster@cluster:~$ sudo nvidia-settings -a [gpu:0]/GPUFanControlState=1
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refusedERROR: The control display is undefined; please run `nvidia-settings –help` for usage information.
X を使用しなくてもそのための設定が必要なので nvidia-xconfig を使って設定ファイルを生成する。
sudo nvidia-xconfig -a –cool-bits=31 –allow-empty-initial-configuration
sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -t -q GPUUtilization
そうすると、実行できるようになる。DISPLAY と XAUTHORITY は指定しておく必要があるっぽい。
cluster@cluster:~$ sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -a [gpu:0]/GPUFanControlState=1
Attribute ‘GPUFanControlState’ (cluster:0[gpu:0]) assigned value 1.
cluster@cluster:~$ sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -a [fan:0]/GPUTargetFanSpeed=50
Attribute ‘GPUTargetFanSpeed’ (cluster:0[fan:0]) assigned value 50.