Guide SAS VIYA

SAS Viya 3.5: Verstehen und Beheben des Fehlers "Local CASLIB quota exceeded"

Simon 26/03/2022 3 Aufrufe

Bei der Ausführung komplexer Modelle in SAS© Viya (wie VDMML) kann es vorkommen, dass Ihr Prozess abrupt stoppt und eine spezifische Fehlermeldung bezüglich der Quoten anzeigt. Dieses Problem tritt häufig beim Trainieren von ressourcenintensiven Modellen wie "Random Forests" auf, die umfangreiche Zustandsdateien (ASTORE) erzeugen.

Wenn Sie auf die Meldung ERROR: Local CASLIB quota exceeded gestoßen sind, erklärt Ihnen dieser Artikel, warum dies geschieht und wie Sie das Problem beheben können.

Illustration

Das Symptom

Das Szenario ist klassisch: Sie starten ein Modelltraining. Die Protokolle zeigen an, dass alles normal funktioniert, die Tabellen geladen werden und die Berechnung beginnt. Plötzlich, im Moment des Schreibens der Modellsicherungsdatei (die savestate- oder astore-Datei), schlägt der Prozess fehl.

Hier ist ein typischer Auszug aus dem Protokoll, den Sie beobachten könnten:

ERROR: Local CASLIB quota exceeded. ERROR: The action stopped due to errors.

In diesem Beispiel versuchte das System, eine Datei von mehr als 10 GB (10.139.446.832 Bytes) zu schreiben, bevor es vom System blockiert wurde.

Die Ursache des Problems: OS-Quote oder CAS-Quote?

Die erste Reaktion ist oft, die Quoten des Betriebssystems (OS) zu überprüfen. Wenn Sie jedoch keine Einschränkungen auf OS-Ebene definiert haben, stammt der Fehler aus der internen Konfiguration des CAS-Servers von SAS© Viya.

Der Fehler zeigt an, dass der der CAS-Bibliothek (Caslib) zugewiesene Festplatten-Cache sein Limit erreicht hat. SAS© Viya verwendet Ressourcenmanagement-Richtlinien, um zu verhindern, dass ein einzelner Prozess oder eine einzelne Bibliothek den gesamten Festplattenspeicher des Servers monopolisiert, was das gesamte System zum Absturz bringen könnte.

Die "Global Caslib Policy" verstehen

In SAS© Viya wird die Verwaltung des Festplattenspeichers für globale Tabellen durch Richtlinien (Policy Definition) geregelt. Der Schlüsselparameter hier ist die Quote.

Die Quote gibt die maximale Menge an Festplatten-Cache-Speicher (in Bytes) an, die eine globale Caslib verwenden kann.

Die Konfiguration sieht normalerweise so aus:

  • globalCaslibs: Definiert die Regeln für die Bibliotheken.

  • quota: Das Limit in Bytes.

  • _ALL_: Eine Regel, die für die Gesamtheit der kumulierten globalen Bibliotheken gilt.

Konfigurationsbeispiel:

New Buffer RO
globalCaslibs
_ALL_ 400000000
HPS 200000000
MyGlobal 100000000
~
~
In diesem Beispiel ist die Bibliothek MyGlobal auf 100 MB begrenzt. Wenn sie versucht, eine Datei zu schreiben, die diese Größe überschreitet, wird der Fehler "Quota exceeded" ausgelöst. Ebenso wird der Fehler auftreten, wenn die Summe aller Bibliotheken das durch _ALL_ definierte Limit überschreitet.

Die Lösung

Um dieses Problem zu lösen, ist es notwendig, die Ressourcenkonfiguration des CAS-Servers anzupassen.

  1. Identifizieren Sie die betroffene Caslib: Überprüfen Sie, in welche Bibliothek Ihr Prozess zu schreiben versucht (oft Casuser oder eine temporäre Bibliothek bei der Erstellung von ASTORE).

  2. Erhöhen Sie die Quote: Sie müssen die Richtlinie globalCaslibs ändern, um den Wert der Quote zu erhöhen, die dieser spezifischen Bibliothek oder dem Parameter _ALL_ zugewiesen ist.

  3. Überwachen Sie den Festplatten-Cache: Stellen Sie sicher, dass der Server physisch über den erforderlichen Festplattenspeicher verfügt, um diese Quoten-Erhöhungen aufzunehmen.

Zusammenfassend lässt sich sagen, dass dieser Fehler eine interne Sicherheitsmaßnahme von SAS© Viya ist. Er gewährleistet die Stabilität des Servers, erfordert jedoch eine manuelle Anpassung, wenn Sie mit Data-Science-Modellen arbeiten, die besonders große Dateien erzeugen.