PDA

View Full Version : Laufzeit eines Jobs verkürzen



Matthias182
17-11-09, 10:29
Hallo Leute,

ich habe eine Frage, wie man die Laufzeit eines Batch-jobs verkürzen kann.

Grundsätzlich habe ich einen Job, der verschiedene Schritte ausführen muss. Dieser Job hat eine bestimmte Zeit an CPU, die genutzt wird. Nehmen wir mal 15 Minuten an.
Die eigentliche Laufzeit des Jobs liegt bei etwa 45 Minuten (also 1:3).
Die 30 Minuten werden aus meiner Sicht für die IO Wartezeit gebraucht.

Meine Frage ist nun, kann ich durch bestimmte Einstellungen/Parameter dieses Verhältnis beeinflussen?

zusätzliche CPUs helfen aus meiner Sicht nur, um die 15 Minuten zu verkürzen. Wobei das auch wieder voraussetzt, dass der Prozess dafür ausgelegt ist in mehreren Threads zu laufen, oder?

Also im Grund genommen geht es darum, wie kann ich Jobs durch Einstellungen am System beschleunigen.


Danke und Gruß
Matthias

Pikachu
17-11-09, 10:36
Ein SETOBJACC auf Dateien, welche im Zugriff sind, wirkt oft Wunder. ;)

Matthias182
17-11-09, 11:49
ok, das wäre allerdings jedes mal, wenn der Job gestartet wurde notwendig, oder?

Ich suche nach einer Möglichkeit, um dies für bestimmte Jobs dauerhaft zu erreichen.

Pikachu
17-11-09, 12:27
Dann mußt du was am Subsystem machen, in dem diese Jobs laufen. Irgendwas mit Pool-Definitionen, Leitwegeinträgen und Klassen.

Matthias182
17-11-09, 13:16
Und davon habe ich nun gar keine Ahnung.

Vielleicht könnt ihr mir da mit ein wenig Unterstützung auf die Sprünge helfen.

holgerscherer
17-11-09, 14:31
Und davon habe ich nun gar keine Ahnung.

Vielleicht könnt ihr mir da mit ein wenig Unterstützung auf die Sprünge helfen.

Ich will ja jetzt nicht kleinlich sein, aber das kann an diversen Gründen liegen...
SIcher hilft ein Festnageln wichtiger Objekte im RAM mit SETOBJACC, aber es kann auch an falschen Indizes liegen, zu geringer Disk-Performance, oder an den Programmen selbst.

Das klingt ein wenig nach mehr als 5 Minuten suchen - vielleicht kann auch das Tagesgeschäft von detaillierter Analyse profitieren.

Beste Grüße von der Common Jako 2009 in Schweinfurt,
-h

Matthias182
17-11-09, 15:05
Hallo Leute,

ich sage ja gar nicht, dass die Performance grundsätzlich schlecht ist.

Ich bin auch grundsätzlich nicht unzufrieden mit der Laufzeit.

Meine Frage ging lediglich dahin, ob es irgend eine Möglichkeit gibt einen bestimmten Job eine schnellere Verarbeitung zu ermöglichen.

Bei der CPU Zeit hilft sicher eine weitere CPU, wenn die Parameter stimmen. Oder auch eine kürzere Zeitscheibe für den Job.

Aber was kann man systemseitig im IO Bereich tun, um ihn eventuell zu beschleunigen. Ohne Änderungen an Software o.ä.

Vielleicht sagt ihr ja auch, es gibt da keine Möglichkeiten, das ist so.

Hoffe das hilft noch ein wenig weiter.


Gruß
Matthias

cbe
18-11-09, 08:54
Hallo Matthias,

ich denke auch, dass Du ohne eine nähere Analyse der Jobs nicht viel weiterkommst.
Hast Du die Quellen oder nur die Objekte?
Bei SQL hilft es evtl, den Job im Debug-Modus laufen zu lassen und dann die Vorschläge des Systems zu den Indexen zu prüfen.

Gruß,
Christian

Fuerchau
18-11-09, 09:40
Grundsätzlich läßt sich an der Laufzeit des Jobs wenig drehen, da nun mal die Zeiten auf viele Jobs verteilt werden. Kürzere Zeitscheiben sind eher von Nachteil, da ggf. unnötige Jobunterbrechungen eingeleitet werden. Längere Zeitscheibe wird ggf. nicht ausgeschöpft, da durch IO die Zeitscheibe vorzeitig verlassen wird.

Hier hilft tatsächlich nur eine Anpassung der Programmlogik.
Schau dir mal zur Laufzeit mit Auswahl 14 (DSPJOB) die Anzahl Schreib/Leseoperationen an.
Häufig werden unnötig viele Datensätze gelesen und an Hand eines Flags dann eben nicht verarbeitet. Eine LF mit diesem Flag als Schlüssel könnte da schon gewaltig helfen.
"Alt"-Programme arbeite ggf. noch mit IP (Input Primary) und vielleicht mit OPNQRYF was auch nicht der Verarbeitungsgeschwindigkeit dient.

Ohne jedwede Anpassung hilft hier nur neue Hardware und ggf. V6R1.

(ILE)RPG-Anwendungen lassen sich nicht auf Threadverarbeitung umstellen insbesonders wenn man Threads nicht tatsächlich auf verschiedene CPU's bringen kann. Ausserdem sind dann zusätzliche Synchronisierungen (Shared Memory) erforderlich.

Matthias182
19-11-09, 09:37
Also an den Programmen lässt sich erstmal nichts drehen.

Wir haben hier eine externe Standard Software im Einsatz und Änderungen sind im Moment weder geplant noch finanziell möglich.

Aus meiner laufen die Jobs auch absolut in Ordnung. Lediglich durch die lange Laufzeit gibt es immer wieder Diskussionen um die Wartungsfenster.

Daher kam die Frage auf, ob wir durch Parameter im System noch Optimierungspotential haben.

Wenn ihr sagt, dass dies nicht so ist, dann kann ich das gut akzeptieren. Ich wollte lediglich verstehen, was grundsätzlich möglich ist.