私が使用していた短いスクリプトを置き換えるためのユーザースペースツール(できればPythonで-それを除けば、必要なことをまだ実行していない場合は簡単に変更できるもの)を見つけたいと思います。以下の2つのこと:
- 100台未満のコンピューター(Fedora 13、それはそうなります)をポーリングして、負荷、使用可能なメモリー、および誰かがそれらを使用しているように見える場合
- ジョブに適したホストを選択し、これらのジョブをsshで実行します。これらのジョブは、共有ファイルシステム(通常は画像処理スクリプトなど)のcpu、場合によってはメモリを大量に消費するタスクの読み取りと書き込みを行う任意のコマンドラインプログラムの実行です。
たとえば、現在のスクリプトを使用すると、Pythonプロンプトで実行できます
>>> import hosts
>>> hosts.run_commands(['users']*5)
またはコマンドラインから
% hosts.py "users" "users" "users" "users" "users"
コマンドをusers
5回実行します(構成ファイルから少なくとも5台のコンピューターのCPU負荷と使用可能なメモリーを確認して、コマンドを実行できる5台のコンピューターを見つけた後)。実行したスクリプト以外にジョブサーバーはなく、これらのコマンドを実行するコンピューター上にワーカーデーモンやプロセスはありません。
さらに、ジョブを追跡したり、失敗したときにジョブを再実行したりできるようにしたいのですが、これらは実際には必要のない追加機能(実際のジョブスケジューラでは非常に標準的)です。
私はPython用の優れたsshライブラリを見つけました。classhやPuSSHのようなもので、私が望む(非常に単純な)負荷分散機能がありません。私が欲しいものの反対側は、私が何かもっと軽いものが欲しいと明確にする前にクリスパマーレによって示唆されたように、コンドルまたはスラムです。それらは適切な方法で物事を行っているでしょうが、それらについて読むと、私がそれらを必要とするときにのみユーザースペースでそれらを回転させるように聞こえます。これは専用のクラスターではなく、これらのホストへのrootアクセス権がありません。
私は現在、他に何かが見つからない場合にコンピューターがどれほど忙しいかを知る必要があるときはいつでも、コンピューターの基本的なポーリングでclasshのラッパーを使用することを計画しています。