PDA

View Full Version : Temp-Datei im Hauptspeicher halten



Kaufmann
22-02-08, 13:39
Wir benutzen verschiedene Dateien die wir in der QTEMP generierten. Um die Performance zuerhöhen möchen wir diese Dateien immer im Hauptspeicher der AS400 halten. Gibt es hier für eine Möglichkeit das man dies z.B. bei der Erstellung festlegen kann?

Pikachu
22-02-08, 14:49
Dafür gibt's den Befehl SETOBJACC (http://www-1.ibm.com/support/docview.wss?uid=nas1dc0a2297bdaefddb86256d6c006990 7f).

Fuerchau
22-02-08, 15:17
SETOBJACC bringt heute so gut wie nichts mehr, sondern eher im Gegenteil.

Dadurch wird nämlich der Speicher für das normale Paging abgeklemmt und andere Programme laufen dafür langsamer, da das Paging künstlich erhöht wird.
Dies kann wiederum dazu führen, dass der gewünschte Effekt ausbleibt und das Programm sogar langsamer läuft!
Schließlich wird zwar die Datei im Speicher gehalten, der Job zwangsläufig nicht unbedingt.

Hier sollten eher die Zugriffsmethoden geprüft werden.
Insbesonders FRCRATIO sollte bei Dateien in QTEMP auf *NONE stehen.
SETOBJACC bringt nämlich nur beim Lesen und nicht beim Schreiben (geringe)Vorteile.

Wenn schon Performanceprobleme auftauchen ist sowieso schon ein Speicherengpass da, den man nicht durch SETOBJACC verschärfen sollte.

holgerscherer
22-02-08, 15:27
SETOBJACC bringt heute so gut wie nichts mehr, sondern eher im Gegenteil.

Jupp. Zusätzlich wäre vielleicht zu überlegen, die Vorgehensweise mit den Dateien in QTEMP zu überdenken. Wenn die Jobs häufig beendet werden, und somit die Dateien in QTEMP erstellt und wieder gelöscht werden, *und* die Anzahl der Jobs die solche Dateien benötigen recht hoch ist, wäre vielleicht eine permanente Datei mit zusätzlichen Keyfeldern interessant. Das "Entsorgen" einer gut gefüllten QTEMP bei Jobende ist bei einer belasteten Maschine auch nicht ohne...

-h

Pikachu
22-02-08, 16:00
Gerade ausprobiert: Mit SETOBJACC kann man selbst noch auf einer 525 unter V5R4 mit knapp 12 GB Arbeitsspeicher und 32 Platten einem Job beim Lesen einer (logischen) Datei mit etwa 1 Million Datensätzen (und einer Satzlänge von etwa 700 Byte) Beine machen: Der Job benötigte nach einem SETOBJACC POOL(*PURGE) etwa 18 Sekunden, nach einem SETOBJACC POOL(*PURGE) mit anschließendem SETOBJACC POOL(*JOB) nur etwa 8 Sekunden. SETOBJACC POOL(*JOB) selbst benötigte etwa 1-2 Sekunden. ;)

holgerscherer
22-02-08, 16:25
Gerade ausprobiert:

Jürgen, was hast Du denn jetzt fix ins RAM genagelt? Das Programm, die gesamte Datei, oder was? Und denk dran, Objekte in QTEMP werden minimal anders behandelt als (grosse) permanente Objekte.

Vielleicht kann Kaufmann auch erklären, wie oft die Dateien erstellt werden, und wie gross sie sind :)

-h

Pikachu
22-02-08, 21:37
Ah ja stimmt, das hätte ich vielleicht schreiben sollen, immerhin geht ja beides. Ich habe nur die logische Datei samt Zugriffspfad in den Arbeitsspeicher geholt. Aber so fix ist das ja auch wieder nicht. Sie kann natürlich auch wieder automatisch von anderen Objekten aus diesem verdrängt werden. ;)