クラスタのジョブ使用量情報の収集

クラスタのジョブ使用量情報の収集

何百人ものユーザーが共有しているLinuxクラスタでシミュレーションを実行しています。誰が実行しているかを決定するジョブスケジューラがクラスタにインストールされており、スケジューラコマンドの1つ(showq)は、すべてのアクティブジョブ、アイドルジョブ、ブロックされたジョブなどのリストを表示します。その出力を処理して、いつでもジョブを実行している一意のユーザー数などを確認したいと思います。以下は、showq -r実行中のジョブを示すいくつかの出力例です。

active jobs------------------------
JOBID               S  PAR  EFFIC  XFACTOR  Q  USERNAME    GROUP            MHOST PROCS   REMAINING            STARTTIME 
123456              R  bas  -----    1.0    -   user_X    group_A            n1     8    4:00:00  Fri Sep 19 17:25:05
123457              R  bas  -----    1.0    -   user_Y    group_B            n2     16    4:00:00  Fri Sep 19 17:25:05  
123458              R  bas  -----    1.0    -   user_Y    group_B            n3     1    4:00:00  Fri Sep 19 17:25:05 
123459              R  bas  -----    1.0    -   user_X    group_A            n4     1    4:00:00  Fri Sep 19 17:25:05 
123460              R  bas  -----    1.0    -   user_X    group_A            n5     2    4:00:00  Fri Sep 19 17:25:05 
123461              R  bas  -----    1.0    -   user_Z    group_A            n6     4    4:00:00  Fri Sep 19 17:25:05 
......

5000 active jobs           

具体的には、以下を計算したいと思います。

  1. ジョブを実行している一意のユーザー数とユーザーごとに実行されているジョブの数(グループにも同じことをしたいが、ユーザーに対してこれを行うとこれは簡単ではありません。)
  2. PROCSユーザー/グループが占めるプロセッサコアの数()
  3. ユーザー/グループに対して実行中のPROC=1シリアル( )および並列( )ジョブの数PROC>1

awkPythonではこれを非常に簡単に実行できますが、/sedまたは他のLinuxコマンドを組み合わせて実行したいと思います。滑らかなジョークが私を幸せにします:-)

ベストアンサー1

最初にすべきことは、出力から望ましくない行showq -r、つまりアクティブなタスクを表す行などを削除することです。これはを使用して行うことができ、またはデータ行の一部を記述する正規表現をshowq -r | sed '1,2d' |sed '$d'使用できます。たとえば、この場合、値が常にある場合は機能します。データ行のみを含むファイルがある場合は、次のものを使用できます。grepgrep "----"EFFIC----associative arrays in awk残りの魔法を完了してください。

#!/bin/awk

{ 
  proc_count[$7] = proc_count[$7] + $10;        
  if ($10 > 1) { multi_proc[$7]++; } else { single_proc[$7]++;  }
}
END { 
  for (foo in proc_count) { print foo, proc_count[foo], multi_proc[foo], single_proc[foo] }
}

上記のスクリプトを実行すると、シリアルプロセッサの数が表示されないことがわかりますuser_z。行数を保存し、0そこにaを印刷したくないからです。エラーチェックを追加して出力をきれいにするのはあなたの役割です。

おすすめ記事