Grundlegendes zu Aktivierungs- und Übermittlungsfiltern
Dieses Thema enthält eine Übersicht über die Typen von benutzerdefinierten Auftragsfiltern, die ein Administrator dem Cluster hinzufügen kann, und wie der HPC-Auftragsplanungsdienst Aufträge basierend auf Rückgabewerten aus diesen Filtern verarbeitet.
Auftragsübermittlungs- und Auftragsaktivierungsfilter sind benutzerdefinierte Anwendungen, die zusätzliche Überprüfungen und Steuerelemente für Aufträge in Ihrem Cluster bereitstellen. Beispielsweise können Übermittlungsfilter Auftragseigenschaften anhand von Informationen Ihrer Wahl überprüfen oder Auftragseigenschaftenwerte ändern. Aktivierungsfilter können auf Faktoren wie z. B. die Lizenzverfügbarkeit überprüfen, bevor Ressourcen einem Auftrag zugeordnet werden. Je nach Rückgabewert aus dem Filter führt der HPC-Auftragsplanungsdienst die entsprechende Aktion für den Auftrag aus. Informationen zum Ermitteln, ob die Planungsrichtlinien, die Sie erzwingen möchten, benutzerdefinierte Filter erfordern, finden Sie unter Informationen zur Verwendung von Auftragsübermittlungs- oder Auftragsaktivierungsfiltern in Windows HPC Server.
In diesem Thema werden Aktivierungs- und Übermittlungsfilter und die Interpretation der Rückgabewerte aus den Filtern durch den HPC-Auftragsplanungsdienst beschrieben. Informationen zum Installieren und Konfigurieren der Filter finden Sie unter Installieren von Übermittlungs- und Aktivierungsfiltern in Microsoft HPC Pack.
In diesem Thema:
Wenn benutzerdefinierte Filter ausgeführt werden
Der HPC-Auftragsplanungsdienst kann benutzerdefinierte Filter ausführen, wenn Aufträge an den Cluster übermittelt werden (Übermittlungsfilter) oder wenn Aufträge clusterressourcen (Aktivierungsfilter) abrufen möchten.
Übermittlungsfilter werden ausgeführt, sobald ein Auftrag übermittelt wird, bevor der Auftrag anhand der Auftragsvorlage überprüft wird (Übermittlungsfilter können Auftragseigenschaften ändern, einschließlich der zugewiesenen Auftragsvorlage). Wenn der Auftrag den Übermittlungsfilter übergibt, werden die Benutzeranmeldeinformationen überprüft, und dann werden die Standard- und Wertbeschränkungen der Auftragsvorlage angewendet. Weitere Informationen finden Sie unter Grundlegendes zu Aktivierungs- und Übermittlungsfiltern [Hilfelink?].
Aktivierungsfilter werden ausgeführt, wenn Kandidatenressourcen einem in die Warteschlange gestellten oder ausgeführten Auftrag zugeordnet werden (Kandidatenressourcen für einen Auftrag basieren auf den Auftrags- und Aufgabeneigenschaften und den Planungsrichtlinien). Der Aktivierungsfilter kann bestimmen, ob der Auftrag für diese Ressourcen gestartet werden soll oder ob die Ressourcen für den Auftrag gehalten oder freigegeben werden sollen. Da Aktivierungsfilter bei jeder Zuordnung von Ressourcen zu einem Auftrag ausgeführt werden, kann der Aktivierungsfilter mehrmals für denselben Auftrag ausgeführt werden. Beispielsweise kann der Aktivierungsfilter ausgeführt werden, wenn der Auftrag gestartet werden soll, und dann erneut ausgeführt werden, wenn neue Ressourcen dem Auftrag hinzugefügt werden sollen (dynamisches Wachstum).
Clusterweite und Auftragsvorlagenspezifische Filter
Benutzerdefinierte Filter können auf clusterweiter Ebene definiert werden und werden für jeden Auftrag ausgeführt. Clusterweite Filter werden als ausführbare Anwendungen oder als Skripts implementiert. Ab Service Pack 2 von HPC Pack 2008 R2 können auch benutzerdefinierte Filter auf Auftragsvorlagenebene definiert werden. Diese Filter werden nur für Aufträge ausgeführt, die mit der zugeordneten Auftragsvorlage übermittelt werden. Mithilfe von Filter auf Vorlagenebene können Sie bestimmte Filter für bestimmte Arten von Aufträgen ausführen und bei Bedarf auch eine Reihe von Filtern ausführen.
Anmerkung
Filter auf Auftragsvorlagenebene müssen als DLLs definiert und die IActivationFilter
oder die ISubmissionFilter
-Schnittstelle implementieren.
Sie können sowohl clusterweite als auch Auftragsvorlagenebenenfilter zum Cluster hinzufügen. Wenn ein Auftrag übermittelt oder zur Aktivierung bereit ist, werden alle Auftragsvorlagenfilter vor dem clusterweiten Filter ausgeführt.
Auftragsübermittlungsfilter und deren Rückgabewerte
Der HPC-Auftragsplanungsdienst kann jedes Mal, wenn ein Auftrag übermittelt wird, einen Auftragsübermittlungsfilter ausführen. Der Filter kann die Auftragseigenschaften überprüfen, um festzustellen, ob der Auftrag der Warteschlange hinzugefügt werden soll.
Der Übermittlungsfilter analysiert die Auftragsbeschreibungs-XML (die die Bedingungen des Auftrags angibt), um nach Optionen zu suchen, die Sie nicht zulassen oder einschränken möchten, oder wenn sie keine erforderliche Option enthalten. Ein Übermittlungsfilter kann auch Änderungen an Auftragseigenschaftenwerten vornehmen, indem die XML-Auftragsdatei geändert wird. Vorgangseigenschaftswerte können nicht geändert werden.
Basierend auf dem Rückgabewert aus dem Auftragsübermittlungsfilter verarbeitet der HPC-Auftragsplanerdienst den Auftrag wie in der folgenden Tabelle beschrieben.
Exit-Code | Auftragsplanungsaktion |
---|---|
0 | Der Auftrag wird der Warteschlange as-ishinzugefügt. |
1 | Der Filter hat eine oder mehrere Auftragseigenschaften geändert, und der Auftrag wird der Warteschlange hinzugefügt. |
Alle anderen Exitcode- | Der Auftrag ist als Fehlgeschlagene mit einer Fehlermeldung gekennzeichnet, dass der Übermittlungsfilter den Auftrag fehlgeschlagen hat. |
Filtertimeout- | Der Auftrag ist als Fehlgeschlagen mit einer Fehlermeldung gekennzeichnet, dass der Übermittlungsfilter timeout war. Der Standardtimeout beträgt 15 Sekunden. Die Einstellung kann im Dialogfeld "Auftragsplanungskonfiguration" geändert werden. |
Filter wurde nicht gefunden | Der Auftrag ist als Fehlgeschlagen mit einer Fehlermeldung gekennzeichnet, dass der Filter nicht gefunden wurde. |
Anmerkung
Wenn Sie eine Kette von Übermittlungsfiltern angegeben haben, führt ein Auftrag jeden Filter in der aufgeführten Reihenfolge durch, bis er erfolgreich alle Filter durchlaufen hat. Bei einem Exitcode von 0 wird der Auftrag an den nächsten Filter übergeben. Mit einem Ausgangscode von 1 wird der geänderte Auftrag an den nächsten Filter übergeben. Wenn der Auftrag an einem beliebigen Punkt in der Kette fehlschlägt, werden alle Übermittlungsfilter, die bereits auf dem Auftrag ausgeführt wurden, erneut in umgekehrter Reihenfolge aufgerufen, damit die Filter aktionen bei Bedarf wiederherstellen können.
Auftragsaktivierungsfilter und deren Rückgabewerte
Der HPC-Auftragsplanerdienst kann einen Aktivierungsfilter ausführen, wenn Kandidatenressourcen einem in die Warteschlange gestellten oder ausgeführten Auftrag zugeordnet werden sollen. Der Auftragsaktivierungsfilter kann den Auftrag auf Faktoren überprüfen, die dazu führen würden, dass der Auftrag fehlschlägt, wenn er aktiviert wird, z. B. die Nichtverfügbarkeit von Lizenzen oder die Nutzungszeit für den übermittelnden Benutzer überschritten.
Der Aktivierungsfilter analysiert die Auftragsbeschreibungs-XML (die die Bedingungen des Auftrags angibt) und kann die Auftragseigenschaften und andere Datenquellen überprüfen, um festzustellen, ob der Auftrag die Ressourcen verwenden kann. Zusätzliche Parameter werden an den Filter übergeben, um Informationen bereitzustellen, z. B. die Anzahl der verfügbaren Kandidatenressourcen während des aktuellen Planungsdurchlaufs, die Position des Auftrags in der Warteschlange und ob das Zurückfüllen im Cluster aktiviert ist. Überprüfen Sie IActivationFilter
Schnittstelle public ActivationFilterResponse FilterActivation(Stream jobXml, int schedulerPass, int jobIndex, bool backfill, int resourceCount)
für diese Parameter. Der Entwickler, der den Filter erstellt, kann diese Parameter verwenden, um das Filterverhalten zu optimieren.
Basierend auf dem Filterrückgabewert aus dem Aktivierungsfilter startet der HPC-Auftragsplanerdienst den Auftrag, blockiert die Warteschlange, bis der Auftrag gestartet werden kann, reservieren Ressourcen für den Auftrag, ohne die Warteschlange zu blockieren oder den Auftrag in den Haltemodus zu setzen. Der Zeitraum, in dem ein bestimmter Auftrag aufbewahrt werden soll, kann mit der Haltedauer bis Auftragseigenschaft festgelegt werden. Wenn ein Auftrag gehalten wird und kein Haltedauer bis Wert für diesen Auftrag angegeben wird, wird der Auftrag für die Anzahl der Sekunden gehalten, die durch die Einstellung Standardspeicherdauer Cluster festgelegt wurde. Die gültigen Werte für Standardspeicherdauer sind 60-604800 (zwischen einer Minute und einer Woche). Der Standardwert ist 900 Sekunden (15 Minuten).
Wichtig
Sobald ein Auftrag ausgeführt wurde, wird die eigenschaft "Halten bis" gelöscht.
Anmerkung
Aktivierungsfilter und Rückausfüllen: Ein Auftrag kann nur in einem Backfill-Fenster mit einem Aktivierungsfilter-Rückgabewert 0 ausgeführt werden.
Basierend auf dem Rückgabewert (Ausgangscode) aus dem Auftragsaktivierungsfilter verarbeitet der HPC-Auftragsplanerdienst den Auftrag wie in der folgenden Tabelle beschrieben.
Exit-Code | In die Warteschlange eingereihte Aufträge | Ausführen von Aufträgen |
---|---|---|
0 | Auftrag starten. Der Auftrag wird für die Kandidatenressourcen gestartet. |
Arbeit vergrößern. Die Kandidatenressourcen werden dem laufenden Auftrag hinzugefügt. |
1 | Auftrag nicht starten, Warteschlange blockieren. Der Auftrag wird nicht gestartet und verbleibt in der Warteschlange. Es werden keine anderen Aufträge oder eine gleiche oder niedrigere Priorität gestartet, bis der Auftrag erfolgreich ist oder abgebrochen wird. Der Filter überprüft den Auftrag in regelmäßigen Abständen, bis der Auftrag übergeben wird, oder bis der Auftrag abgebrochen wird. |
Arbeit nicht wachsen. Die Kandidatenressourcen werden dem laufenden Auftrag nicht hinzugefügt. Die Warteschlange ist nicht blockiert, und die Ressourcen können für andere Aufträge verwendet werden. |
2 | Starten Sie den Auftrag nicht, halten Sie Ressourcen ab, und fahren Sie mit der Planung anderer Aufträge fort. Der Auftrag wird nicht gestartet, aber Kandidatenressourcen sind je nach Planungsmodus dafür reserviert: In der Warteschlange werden bis zu den maximalen Ressourcen des Auftrags reserviert. in Balance werden die Mindestressourcen reserviert. Andere Aufträge können für andere Ressourcen gestartet werden. Der Filter überprüft den Auftrag in regelmäßigen Abständen, bis der Auftrag übergeben wird. |
Undefiniert. Der Filter sollte diesen Beendigungscode für ausgeführte Aufträge nicht zurückgeben. |
3 | Halten Sie auftrag, geben Sie Ressourcen frei, und fahren Sie mit der Planung anderer Aufträge fort. Der Auftrag wird bis zu dem Datum und der Uhrzeit, das durch die Haltevorgang bis Auftragseigenschaft angegeben ist, in den Haltevorgang versetzt. Nach dem Haltezeitraum wird der Auftrag vom Filterprogramm neu ausgewertet. Wenn der Filter mit Beendigungscode 3 und keine Haltedauer zurückgibt, bis Wert für diesen Auftrag angegeben ist, wird der Auftrag für den Zeitraum aufbewahrt, der durch die Einstellung Standardspeicherdauer Cluster festgelegt wurde. |
Undefiniert. Der Filter sollte diesen Beendigungscode für ausgeführte Aufträge nicht zurückgeben. |
4 | Fehlerauftrag. Der Auftrag ist als Fehlgeschlagen mit einer Fehlermeldung gekennzeichnet, dass der Auftrag vom Aktivierungsfilter fehlgeschlagen war. |
Undefiniert. Der Filter sollte diesen Beendigungscode für ausgeführte Aufträge nicht zurückgeben. |
Alle anderen Exitcode- | Undefiniert. Behandelt jedoch den gleichen Wert wie 2. | Undefiniert. Der Filter sollte diesen Beendigungscode für ausgeführte Aufträge nicht zurückgeben. |
Filtertimeout- | Identisch mit Dem Ausgangscode 2. Der Standardtimeout beträgt 15 Sekunden. Die Einstellung kann im Dialogfeld "Auftragsplanungskonfiguration" geändert werden. |
Undefiniert. |
Filter wurde nicht gefunden | Identisch mit Dem Ausgangscode 2. | Undefiniert. |
Anmerkung
Wenn Sie eine Kette von Aktivierungsfiltern angegeben haben, wird ein Auftrag von jedem Filter in der aufgeführten Reihenfolge ausgewertet, solange er mit einem Exitcode von 0 übergibt. Wenn ein Filter einen Nicht-Null-Beendigungscode zurückgibt, wird dieser Wert an den HPC-Auftragsplaner übergeben, und alle Aktivierungsfilter, die bereits auf dem Auftrag ausgeführt wurden, werden in umgekehrter Reihenfolge aufgerufen, um es den Filtern zu ermöglichen, Aktionen wiederherzustellen, falls erforderlich. Beispielsweise kann ein Aktivierungsfilter, der nach verfügbaren Lizenzen sucht, Code enthalten, um die Lizenzen freizugeben, wenn die Revert-Funktion aufgerufen wird.