Anmelden

View Full Version : Aktivierungsgruppen ?



Xanas
18-01-06, 08:15
Hallo zusammen,

wie ich ja nun aus meinem letzten Thema gelernt habe, werden Aktivierungsgruppen erst freigegeben, wenn der Job endet.

Weil wir mit benannten oder *caller Aktivierungsgruppen arbeiten, kann im laufe eines Tages einiges an Aktivierungsgruppen erstellt werden. Einige Jobs laufen auch 1 Monat komplette ohne Neuanmeldung durch.
In wie weit, belasten viele Aktivierungsgruppen die Leistung der I5?

Xanas

Fuerchau
18-01-06, 09:38
Wenn genug Speicher (auch Platte) vorhanden sind, überhaupt nicht.
Durch Paging werden inaktive Seiten eh ausgelagert.

Allerdings sollten nicht benötigte ACTGRP's per RCLACTGRP bei Langläufer-Job's rausgeschmissen werden.

Xanas
18-01-06, 09:51
habe ich denn einen Performance Vorteil, wenn ich eine benannte Aktivierungsgruppe verwende statt *caller?


z.B ein Auftrufstapel
pgmA = actgrp('A')
pgmB = actgrp('B')
pgmC = actgrp('C')
pgmD = actgrp('D')

oder
pgmA = actgrp('A')
pgmB = actgrp(*caller)
pgmC = actgrp(*caller)
pgmD = actgrp(*caller)

Fuerchau
18-01-06, 10:01
Der Performance-Vorteil ist nur minimal, da ACTGRP's nur beim Init etwas dauern.
Wichtig ist die Call-Reihenfolge bzw. Verwendung.
Häufig verwendete Programme können in einer eigenen gemeinsamen ACTGRP laufen, seltenere Aufrufe in einer eigenen.
Z.B.:
PGMA actgrp(A)
- call PGMC actgrp(X)
- call PGMD actgrp(X)
rclactgrp A

PGMB actgrp(B)
- call PGMC actgrp(X)
- call PGMD actgrp(X)
rclactgrp B

ACTGRP(C) bleibt also aktiv.
Es kommt auf das Design der Anwendung an, ggf. sind aber Service-Pgme performanter.

Xanas
18-01-06, 10:17
Wann sind Service Programme performanter, in einer eigenen oder *caller Actgrp?


Warum macht man den rclactgrp überhaupt? Ich muss zu geben, wir verwenden den bisher überhaupt nicht.

Fuerchau
18-01-06, 10:38
Den RCLACTGRP benötigt man nur, wenn man tatsächlich mal aufräumen muss.
In Batchanwendungen macht er eher selten Sinn, da normale Batchjobs sich beenden.
Bei Dauerläufern kann es dann Sinn machen, wenn sehr viele verschiedene Aktionen eher selten aufgerufen werden. Werden immer die selben Programme gestartet, spart man sich das Initialisieren.
Hilfreicher ist da aber meistens, ob sich ein Programm mit oder ohne *INLR=*ON beendet.
Wird ein solches Programm häufig aufgerufen, muss man wissen ob die *INZSR und der Init aller Felder tatsächlich benötigt wird.
Bei *INLR=*OFF und RETURN entfällt der mühsame Open aller Dateien. Allerdings bleiben ggf. gesperrte Sätze gesperrt !

In Service-Programme steckt man nur Funktionen, die sehr häufig von verschiedenen Programmen verwendet werden.
Aber auch hier: das Anwendungsdesign entscheidet.

Xanas
18-01-06, 13:01
Den RCLACTGRP benötigt man nur, wenn man tatsächlich mal aufräumen muss.


Ah alles klar, da wir ja anständig Programmieren, bzw. es versuchen, brauchen wir ihn dann auch weiterhin nicht. ;)

Und abermals vielen Dank.

BenderD
19-01-06, 17:06
Hallo,

bei Dauerläufern erfordert dann allerdings die Installation von Änderungen ein beenden des Programmes, damit die Änderung auch funzt.

Den ganzen Performance Kram kann man hier vergessen, Zeit wird meist ganz woanders in größeren Mengen vertrödelt!!!

mfg

Dieter Bender

PS: Beim Einsatz von Commit gibt es noch ein paar Aspekte zu berücksichtigen mit Activation Groups!


Ah alles klar, da wir ja anständig Programmieren, bzw. es versuchen, brauchen wir ihn dann auch weiterhin nicht. ;)

Und abermals vielen Dank.