ジョブごとにメモリ要件を設定できるようにしたい。
たとえば、5つのジョブを実行するには、それぞれに4GBのメモリが必要であることがわかっています。 Ubuntuサーバーに16GB RAMと16GBのスワップがあります。スワップの使用を避けたいのですが、次のようなことができますか?
qsub -l mem_required_for_my_job=4G job1
qsub -l mem_required_for_my_job=4G job2
qsub -l mem_required_for_my_job=4G job3
qsub -l mem_required_for_my_job=4G job4
qsub -l mem_required_for_my_job=4G job5
?ジョブはいつか4GBを必要としますが、最初は必要ありません。
SGEに私の要件を伝える方法は? 16GBしか使用できない場合に5x 4 GBのスケジュールを回避するにはどうすればよいですか?
ユーザーガイドを読んでs_vmem, h_vmem, mem_free, mem_used
。それらのどれも私が欲しいものではありません。処理の途中でジョブが強制終了されないようにします。必要な最大のリソースが利用可能でない限り、それらをスケジュールしないようにします。
これはできますか?
皆さん、ありがとうございました!
クラスタでは、h_vmem
を使用してジョブのメモリ割り当てを強制します。
不足しているように見えるのは、利用可能な量を消費可能なリソースとして設定することです。 qconf -mc
またはqmon
複合ダイアログで、リソースを要求可能および消費可能として設定する必要があります。
次に、qconf -me
の各ホストで、complex_values
に使用可能なメモリの量を設定する必要があります。
たとえば、次のようなホスト定義があります。
hostname node004
load_scaling NONE
complex_values h_vmem=30.9G,exclusive=1,version=3.3.0
あなたが探しているのはvirtual_free
「virtual_freeのジョブリクエストが利用可能な量を超えた場合、ジョブはそのホストのキューにディスパッチされません。」から https://web.archive.org/web/20100801220839/http://wikis.Sun.com/display/GridEngine/Configure+Complex+Resource+Attributes