GPUクラスタの使用状況をログインノードから一発で確認するシェルスクリプト
はじめに
うちの研究室にはGPUクラスタがありますが、各GPUノードの使用率を見るには、各GPUノードにsshしてnvidia-smi
をしなければいけません。
これでは不便なので、ログインノードから一発で確認できるシェルスクリプトを作成・公開しました。
cluster-smi
GitHubで公開しました。
使用方法
リポジトリのREADME.mdにも書いてあるのですが簡単に
submodule (prettytable.sh)があるので、それを取得し、cluster-smi.sh
を実行するだけです。
もしパスを通したかったら、cluster-smi.sh
をどこかパスの通っている場所にシンボリックリンクを貼って下さい。
(もちろん、.bashrc
に追加でもOKです)
技術的な話
単純に各GPUノードにsshしてnvidia-smi
を実行して、その情報を切り取っているだけです。
シンボリックリンク
cluster-smi.sh
はprettytable.sh
を参照しているので、cluster-smi.sh
だけでシンボリックリンクを貼ると参照できなくなります。
そこで以下の記事を参考に、シンボリックリンクを解決しながら絶対パスを取得しています。
シェルスクリプトでシンボリックリンクを解決しながらその絶対パスを取得するには | hydroculのメモ
なので、
cluster-smi.sh
だけシンボリックリンクを貼っても動くわけです。
並列化
それぞれのノードから情報を取ってくる部分を関数化し、単純に&
付けるだけで並列化しています。
なので、結果がバラバラに帰ってきます。 これをなんとかしたかったのですが、シェルスクリプトでは厳しかったです。(もし方法があれば教えて頂きたい…)
なぜシェルスクリプト?
移植性が高いからです。 完全にこの本に影響を受けています。