21.01.2019, 23:46
Hallo zusammen.
Nach vielen Tagen der Stille möchte ich nun auch wieder etwas zu Wort geben. Das Cleanup-Script macht mächtige Fortschritte.
Aktueller Stand: Das Script funktioniert tadellos mit ein paar gewaltigen Haken:
- Das Script arbeitet ordnungsgemäß
- alle unbenötigten Assets werden aus der Datenbank gelöscht
- alle benötigten Assets bleiben vorhanden (das schließt referenzierte Assets aus Scripten, Texturen auf Prims, Kleidung usw bleiben vorhanden)
- Die Datenbank wird nach dem Vorgang optimiert um den frei gewordenen Speicherplatz auch wirklich wieder nutzen zu können
Die gewaltigen Haken sind nun folgende:
- Das Script verbraucht extrem viel Arbeitsspeicher, da das Script mit OARs und IARs arbeitet. Die Daten werden vollständig in den Arbeitsspeicher geladen und von dort aus verarbeitet -> sehr ineffizient, da in meinem Fall (Testmaschine mit 4 GB Arbeitsspeicher) das System nach 80 % der Arbeit anfing den Erweiterungsspeicher anzugraben (mit etwa 800 MB zusätzlich). Das machte die Arbeit natürlich entsprechend langsam. Die Verarbeitung der Daten hingegen ging sehr fix wenn auch die gesamte Verarbeitungszeit 1 Stunde und 30 Minuten dauerte bei 1,8 GB Datenmenge (entspricht etwa 28000 Assets).
Ergo: Der derzeitige Entwurf des Scripts ist nicht nutzbar auf einem aktiven Grid, welches GB-Weise Daten gespeichert hat.
Der zweite Entwurf ist derzeit in der Produktion und arbeitet ein wenig anders. Die Daten werden nicht bei jedem Assettyp neu entpackt sondern werden stückchenweise auf die Festplatte entpackt und dann gelesen:
- 1x entpacken -> 7 Arbeitsvorgänge (vorher: 7x entpacken -> 7 Arbeitsvorgänge)
- Nicht mehr Arbeitsspeicherintensiv, da nur die Asset IDs abgelegt werden und nicht die ganzen Archive
- Jedes entpackte Archiv wird direkt nach der Bearbeitung gelöscht (die Archive selbst bleiben erhalten)
Ein aktueller Test zeigte, dass die Verarbeitung des Scripts nun keine 1 Stunde 30 mehr benötigt, sondern nur noch 1 Minute bei 1,8 GB an Daten. Bei einer Datenansammlung von hochgerechnet 480 GB macht dies eine Bearbeitungszeit von etwa 5 Stunden (theoretisch). Allerdings haben die Hochrechnungen auch gezeigt: Bei einer Belegung von 28k Assets entsprach der freigewordene Speicher etwa 300 MB (nach der Bereinigung war die Tabelle nur noch 1,5 GB anstatt 1,8 groß). Wenn man theoretisch hochrechnet auf 480 GB macht dies eine Bereinigung von etwa 78 GB. Auf jeden Fall wäre das der Aufwand wert.
Ich werde weitere Messungen vorlegen, sobald das Script fertig ist.
Viele Grüße
Christian Nill
Nach vielen Tagen der Stille möchte ich nun auch wieder etwas zu Wort geben. Das Cleanup-Script macht mächtige Fortschritte.
Aktueller Stand: Das Script funktioniert tadellos mit ein paar gewaltigen Haken:
- Das Script arbeitet ordnungsgemäß
- alle unbenötigten Assets werden aus der Datenbank gelöscht
- alle benötigten Assets bleiben vorhanden (das schließt referenzierte Assets aus Scripten, Texturen auf Prims, Kleidung usw bleiben vorhanden)
- Die Datenbank wird nach dem Vorgang optimiert um den frei gewordenen Speicherplatz auch wirklich wieder nutzen zu können
Die gewaltigen Haken sind nun folgende:
- Das Script verbraucht extrem viel Arbeitsspeicher, da das Script mit OARs und IARs arbeitet. Die Daten werden vollständig in den Arbeitsspeicher geladen und von dort aus verarbeitet -> sehr ineffizient, da in meinem Fall (Testmaschine mit 4 GB Arbeitsspeicher) das System nach 80 % der Arbeit anfing den Erweiterungsspeicher anzugraben (mit etwa 800 MB zusätzlich). Das machte die Arbeit natürlich entsprechend langsam. Die Verarbeitung der Daten hingegen ging sehr fix wenn auch die gesamte Verarbeitungszeit 1 Stunde und 30 Minuten dauerte bei 1,8 GB Datenmenge (entspricht etwa 28000 Assets).
Ergo: Der derzeitige Entwurf des Scripts ist nicht nutzbar auf einem aktiven Grid, welches GB-Weise Daten gespeichert hat.
Der zweite Entwurf ist derzeit in der Produktion und arbeitet ein wenig anders. Die Daten werden nicht bei jedem Assettyp neu entpackt sondern werden stückchenweise auf die Festplatte entpackt und dann gelesen:
- 1x entpacken -> 7 Arbeitsvorgänge (vorher: 7x entpacken -> 7 Arbeitsvorgänge)
- Nicht mehr Arbeitsspeicherintensiv, da nur die Asset IDs abgelegt werden und nicht die ganzen Archive
- Jedes entpackte Archiv wird direkt nach der Bearbeitung gelöscht (die Archive selbst bleiben erhalten)
Ein aktueller Test zeigte, dass die Verarbeitung des Scripts nun keine 1 Stunde 30 mehr benötigt, sondern nur noch 1 Minute bei 1,8 GB an Daten. Bei einer Datenansammlung von hochgerechnet 480 GB macht dies eine Bearbeitungszeit von etwa 5 Stunden (theoretisch). Allerdings haben die Hochrechnungen auch gezeigt: Bei einer Belegung von 28k Assets entsprach der freigewordene Speicher etwa 300 MB (nach der Bereinigung war die Tabelle nur noch 1,5 GB anstatt 1,8 groß). Wenn man theoretisch hochrechnet auf 480 GB macht dies eine Bereinigung von etwa 78 GB. Auf jeden Fall wäre das der Aufwand wert.
Ich werde weitere Messungen vorlegen, sobald das Script fertig ist.
Viele Grüße
Christian Nill