Ich würde das eher als eine Art Queue realisieren – und jeder Server im Cluster der gerade “nichts zu tun” hat, holt sich ein Item aus der Queue und verarbeitet es.
Jepp! Wobei die Frage entsteht, ob ein ein (1) Item sein soll. Immerhin werden in Servern Mehrprozessorsysteme verbaut und die Frage, ob das gegenständliche Programm einen oder mehrere CPU "beschäftigt" sollte man auch stellen.
Im Übrigen enthalten die "Ordner" /proc und /sys "Dateien" mit wertvollen Informationen. Ein
$ less /proc/meminfo
ist schon mal informativ und zeigt, wie es dem Rechner hinsichtlich des Speichers "ganz allgemein so geht". Wenn man ein Programm in einer (sub-)shell startet und dabei in den Hintergrund schickt kann man in der selben (sub-)shell mit echo $! dessen PID erfahren oder diese mit pid=$! speichern und dann auch in /proc/$pid nachsehen, wie es dem Programm selbst geht...
$ program &
$ pid=$!;
$ less /proc/$pid/status
... liefert dann also einige Informationen zum Programm "program".
Will man davon bestimmte, dann kann man die durch den (e)grep, tr und ggf. noch durch sed jagen:
$ program &
$ pid=$!;
$ grep 'VmSize:' /proc/$pid/status | cut -d ':' -f2 | tr -d ' ' | tr -d "\t" | sed '~s/kB/000/'
Natürlich geht es auch einfacher. Man lege auf Grund von Erfahrungswerten einfach die Anzahl der maximal zu startenden Jobs in dem verwaltenden Programm fest.