-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Aktuell hat jeder Worker festgesetzte Resourcen-Limits WorkerResourceLimits(max_memory=200 * MiB, max_cpu_time_seconds_per_call=10) was sich aber mit #137 ändern soll. Aufbauen auf diesen Kommentar:
Paket
Jedes Paket sollte sich auf ein festgelegtes Mindestmaß an Resourcen verlassen können, das es verwenden darf. Benötigt das Paket von einer oder mehreren Resourcen mehr, dann kann es über die qpy_config.yml angefordert werden z.B.:
resources:
virtual_memory: 500 MiB
cpu_time_per_call: 20s
[...]
Sollten weniger Resourcen angefragt werden, als das festgelegte Mindestmaß, darf der Worker auch nicht mehr verwenden.
Paketabhängigkeit
Um die Implementierung im Server zu vereinfachen, würde ich vorschlagen, dass die angefragten Resourcen mindestens genauso hoch sein müssen, wie die der Abhängigkeiten. Im SDK könnte man für den Fall, dass das nicht gegeben ist, eine Warnung oder sogar eine Fehlermeldung ausgeben.
Das sollte relativ einfach bei statischen Abhängikeiten umzusetzen sein, bei Dynamischen muss der Entwickler vorher schauen, welche und wieviele die Pakete jeweils benötigen.
Server
Die Limits können vom Admin nach oben geändert werden. Wenn ein Paket mehr Resourcen benötigt, als vom Admin (oder per Default) festgelegt, dann wird das Paket nicht ausgeführt.
Der Admin sollte aber über die config.ini für ausgewählte Pakete Außnahmen machen können z.B.:
[worker_pool]
max_workers = 8
max_memory = 500 MiB
[worker]
virtual_memory = 250 MiB
cpu_time_per_call = 15s
exceptions =
@qpy/truthtable {
virtual_memory = 400 MiB
cpu_time_per_call = 20s
}
@qpy/falsetable {
virtual_memory = 200 MiB
}
Man könnte hier auch überlegen, dass man zusätzlich zum Identifier auch eine Version angeben kann (@qpy/truthtable/1.0.0), oder die Limits für einen ganzen Namespace ändern kann (@qpy), oder es User-abhängig macht (tu-berlin.de).
Ich würde das wie die CSS-Regeln handhaben: die spezifischste zutreffende Regel (in unserem Fall der Identifer in exceptions) hat Vorrang.