systemdサービスユニットファイルで環境変数を動的に割り当てる方法はありますか?
4つのGPUを搭載したマシンがあり、GPUごとに特定のサービスの複数のインスタンスをスピンアップする必要があります。例えば:
- gpu_service @ 1:1.service
- gpu_service @ 2:1.service
- gpu_service @ 3:1.service
- gpu_service @ 4:1.service
- gpu_service @ 1:2.service
- gpu_service @ 2:2.service
- gpu_service @ 3:2.service
- gpu_service @ 4:2.service
- 吐き気
したがって、1:1、2:1などは実質的にサービスユニットファイルの%iです。
サービスを特定のGPUにバインドするために、サービス実行可能ファイルは特定の環境変数をチェックします。たとえば、次のとおりです。
USE_GPU=4
サービスユニットファイル内で%iを取得し、それを何らかの(シェル)関数で実行してGPU番号を取得し、それに応じてUSE_GPU環境変数を設定する方法はありますか?
最も重要なことは、/etc/systemd/system/gpu_service@x:y.service/local.conf
より多くのインスタンスを起動できるようにするためだけに、複数のファイルを作成する手間が不要であることです。