-
Parallele Verarbeitung
Guten Morgen
Ich habe folgendes Problem:
Ein PGM A erhält Daten aus einem File und wertet diese aus.
Je nach Art der Daten soll jeweils ein weiteres PGM B gestartet werten, dass eine Folgeverarbeitung des jeweils gelesenen Datensatzes übernimmt.
Soweit so gut - ABER
Ich möchte dass:
- PGM A nicht auf die Beendigung von B wartet, sondern parallel dazu weiter arbeitet
- PGM B mehrfach aufgerufen wird - je nach Art der Daten -> PGM B1, B2, B3 usw.
- Der Aufruf von PGM B in einer internen Tabelle in PGM A gespeichert wird, so dass bei gleicher Art der Daten das dazu passende laufende PGM Bn nur noch die Daten bekommt
Geht sowas ? Und wenn ja wie?
Vielen Dank vorab
-
Eine parallele Verarbeitung ist tatsächlich nur mit C++ und Multithreading bzw. Java möglich.
Du musst einfach die benötigten Programme für die parallele Verarbeitung in ein Subsystem submitten. Alternativ geht's auch über Prestart-Job's.
Diese Programme warten auf Aktionen über eine DTAQ (QRCVDTAQ).
Das Hauptprogramm sendet dann an diese DTAQ's (QSNDDTAQ) entsprechende Aufträge.
-
Danke für die Antwort... das habe ich schon befürchtet
Und als Kommunikation zw. Hauptprogramm und Childs auch eine DTAQ?
-
Bringt mir der Aufruf mit ACTGRP(*NEW) etwas?
-
Nein, da ja das Programm per CALL aufgerufen und mit Return verlassen wird kann es nicht parallel laufen.
-
Es wäre für uns ganz interessant zu hören, unter welchen Umständen die Programme A und B1, ..., Bn laufen sollen. Z.B.
- Wie viele Sätze erscheinen in welcher Zeit in A ?
- Wie lange dauert die Verarbeitung von A ohne B ?
- Wieviele Programme B1, ..., Bn gibt es ?
- Wie lange dauert die Verarbreitung der B ?
- Welche Auslastung wird bei Batch- Verarbeitung (rein sequentiell) erreicht ?
- Wieviele Prozessoren stehen für Parallelverarbeitung zur Verfügung ?
- Gibt es andere Gründe, die B's in separaten Streams arbeiten zu lassen ?
Ich habe so ein Programmpaket mal alleine mit CLP's geschrieben, also A startet das Lesen mit einer Datei, ruft evtl. A2 per call, und erweckt dann je nach Bedarf Tasks B1, B2, ... Bn, denen es über n Messagequeues oder DataQueues Datenpakete zusendet. Die B's empfangen asynchron die Datenpakete, und verarbeiten sie parallel zu A.
Bei mir hatte ich noch C1,...Cn und D1,...Dn dahinter, also eine ganze Kaskade von Instanzen und Tasks, die obendrein auf 2 bis 3 Mehrprozessor-Rechnern verteilt wurden.
Später habe ich alles von CL in REXX umgeschrieben, eine Sprache, mit der man ganz gut Zeichenketten und Tabellen (SQL-Resultsets) verarbeiten kann. Sie kann wunderbar CL-Befehle und SQL-Befehle absetzen, Messages parsen, die Daten entnehmen, Fälle unterscheiden, Daten weitersenden oder mit SQL speichern usw. Meine Jobs, die normalerweise sehr zäh liefen, und ohne Multitasking den ganzen Tag in Anspruch nahmen (auch mehrere Tage), liefen durch dieses von mir erarbeitere Multitasking in 15-45 Min durch, weil jede Task nur eine spezielle Aufgabe ausführte, wobei sie eine sehr hohe Effektivität erreichte (Programme nur einmal laden und bereit halten). Der Zeitbedarf ging also zurück, und die Tasks störten kaum noch, bis auf die Tastache, daß die CPU's öfters 100% anzeigten.
Mit Java oder C++ kann man das auch, und sogar echtes Multithreading betreiben. RPG- oder COBOL-Programmierer lernen so was aber eher selten, und man müßte sich intensiv mit ILE-Programmierung beschäftigen, um das vernünftig zu gestalten. Dann kann man aber sowohl C++ als auch ILE-RPG der ILE-COBOL dafür verwenden.
Im Prinzip kommt es vor allem darauf an, ob es wichtig genug ist, solchen Aufwand zu rechtfertigen. Bei mir ging es z.B. um Testtools, die ich nach Maß innerhalb von ca. 14 Tagen geschneidert habe, und die bestimmt 10 Jahre lang benutzt wurden - wahrscheinlich sogar heute noch.
Ähnliches habe ich auch schon mit MQ-Series realisiert. Dabei ging es um regelrechte Webservices, die von Webusern in Anspruch genommen werden konnten. Man kann das dann zum Anlaß nehmen, eine ganze Palette von speziellen Tasks passend zu orchestrieren (6 Geigen, 2 Trompeten, 1 Klavier, 10 Sänger, ...), so daß alle wirklich gut zusammen spielen.
Bei weiterem Interesse mir bitte eine PN senden.
-
Vielleicht geht auch ein SBMJOB in Verbindung mit RCVMSG CPC1221.
Similar Threads
-
By jogisarge in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 25-06-08, 13:33
-
By RaMai in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 02-11-07, 18:21
-
By RLurati in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 20-10-06, 10:09
-
By RLurati in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 20-10-06, 09:31
-
By Brownie in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 28-07-04, 11:56
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks