2012-12-13 6 views

答えて

-1

これに素敵なバイパスがあります:私はそれが役に立つかもしれません見つかった唯一のものは、(Q1に3つの有効なノードが利用できると仮定し、第2四半期のために使用可能なすべてのノードが有効である)です。

#!/bin/bash 
sleep 6000 #replace 6000 with any long period of time that will be enough to submit your jobs 

あなたは、彼らは完全にそれを占有するまで除外したいノードにこのジョブを送信:

は、単純なbashのファイルを生成します。

Wualaでは、ノードは除外されています。

+0

これはハックですが、私にとっては唯一の解決策です(+1)。私はダースのqsubの亜種を試しましたが、違いがないか、エラーが発生します。 – DaveFar

2

私が見つけた最良の方法は、実行を許可したいノードにカスタムリソースを設定し、ジョブをサブミットするときにそのリソースを必要とすることです。

qmonでは、「複雑な」構成に行き、新しい属性を追加します。名前を "my_allowed"のようなものに設定し、 "m_a"、BOOLの型、==との関係、Yesへの要求、Noへの消耗品、および "Add"のようなものへのショートカット。複雑な設定に変更をコミットします。

次の手順はコマンドラインから行う方が簡単ですが、qmonでも実行できます。ジョブを実行できるようにする各ホストに消耗品を追加する必要があります。 qmonでは、ホスト構成に行き、実行ホストを選択し、順番に各ホストを開き、消耗品/固定属性タブをクリックして、上記で構成した新しいコンプレックスを値として「True」で追加することができます。コマンドラインから実行ホストのリストを "qconf -sel"で取得することができます。このリストは、ループに渡し、不要と思われるホストをグレープするのに適しています。

qconf -sel | grep -v host_to_exclude | while read host; do 
    EDITOR="ed" qconf -me $h <<EOL 
/complex_values/s/$/,my_test=True/ 
w 
q 
EOL 
done 

これにより、ホストをプログラムで編集することができます(通常はqconfによって許可されていないため、エディタを起動することはできません)。これは、エディタを "ed"に設定することで行います(edエディタがインストールされていることを確認する必要があります...手で最初に実行してください... "q"を入力してください)。 edはstdin上で編集コマンドのリストを取るので、3つのコマンドを与えます。最初の行は、その行のcomplex_valuesを含む行をmy_test値を含むように編集します。 2番目は一時ファイルを書き出し、3番目は終了します。

あなたはこれをしたら、あなたの新しい複合体を必要とlimitオプションを使用してジョブを送信:

qsub -q whatever -l my_test=True my_prog.sh 

-lオプションが制限値を設定し、my_test = Trueのジョブのみで実行できると言います複雑なmy_testの値がTrueのホスト。コンプレックスは消耗品ではないので、各ホスト上で(ホストのスロット制限まで)多数のジョブを実行することができますが、my_testコンプレックスを持たないホストはすべてTrueに設定されません。

15

これを実行したくないと仮定するとn4と呼ばれ、 スクリプトに以下を追加すると動作するはずです。

#$ -l h=!n4 
+2

"qsub:エラー(不明なリソースタイプResource_List.h)を取得しました" – dranxo

+0

ありがとうございます。これを2つのホスト名にするにはどうすればいいですか? '#$ -l h =!n4 h!= n5'または'#$ -l h!= n4、n5'は動作しません。 – Arman

+0

h =!h4&!h5またはh =!(h4 | h5) –

関連する問題