Der Natural Profiler wird verwendet, um den internen Prozessfluss einer Natural Batch-Anwendung zu überwachen und die Performance und die Codeabdeckung der Anwendung zu analysieren.
Die Profiler Utility wird durch JCL-Eingabe gesteuert und bietet Funktionen zur Datensammlung und Datenverarbeitung:
Die Datensammlungsfunktionen steuern das Profiler-Tracing, wählen erforderliche Ereignistypen aus, filtern, konsolidieren (aggregieren) oder nehmen Datenproben (Sampling) und schreiben die resultierenden Ereignisse in die Profiler-Ressourcendatei.
Die Datenverarbeitungsfunktionen lesen und verarbeiten die Ereignisdaten aus der Profiler-Ressourcendatei. Nicht konsolidierte Ereignisdaten können konsolidiert werden.
Sie können Statistiken, eine Programmzusammenfassung, eine Zeilenzusammenfassung und eine Transaktionszusammenfassung, ein Programm-Trace (Ablaufverfolgung), ein Ereignis-Trace mit den wichtigsten Daten sowie Reports über die Programm- und Statement-Abdeckung ausgeben. Sie können die resultierenden Daten im Text- oder CSV-Format (kommatrennte Werte) exportieren.
Die folgenden Tools bieten außerdem Funktionen zum Lesen von Profiler-Ressourcendateien und zum Analysieren der Daten:
NaturalONE zeigt das vollständige Ereignis-Tracing an und bietet eine Performance-Analyse (Hot-Spots) der Natural Batch-Anwendung. Abdeckungsdaten können in der NaturalONE Coverage-Ansicht und im NaturalONE Source Editor überprüft werden.
Die Profiler Rich GUI-Schnittstelle, das von den NaturalONE Tools and Utilities gestartet wird, bietet Funktionen zum Auswerten oder Konsolidieren von Profiler-Daten oder zum Löschen einer Ressourcendatei. Interaktive Kreisdiagramme zeigen die Verteilung der Profiler-Leistungskennzahlen (KPIs, Key Performance Indicators) für ausgewählte Kriterien, z.B. die Verteilung der CPU-Zeit für Programme. Bei überwachten Programmen wird der Quellcode mit den Profiler-Daten kombiniert, wobei der Quellcode entsprechend dem Wert des ausgewählten KPI eingefärbt wird.
Dieses Kapitel behandelt die folgenden Themen:
Profil-Erstellung einer Großrechner-Session aus Natural Studio
Ablaufverfolgung (Tracing) beim Messen der Natural-Codeabdeckung
Die folgenden Voraussetzungen müssen erfüllt sein, bevor Sie die Profiler Utility im Batch-Modus verwenden können:
Für die Natural Profiler-Datenerfassungsfunktionen (INIT,
COVERAGE, START, PAUSE und TEXT)
müssen Sie die folgenden Natural-Profilparameter definieren:
RDCSIZE - Um
den Natural Data Collector (ohne Aufzeichnungsdaten im Puffer des Natural Data
Collector) zu aktivieren, geben Sie an:
RDCSIZE=2
RDCEXIT - Um
NATRDC1 als User Exit für den Natural Data Collector zu definieren, geben Sie
an:
RDCEXIT=NATRDC1
PDPSIZE -
Optionaler Parameter, den Sie zusätzlich angeben können, um die
Profiler-Daten-Pool-Größe zu bestimmen, zum Beispiel:
PDPSIZE=1000
Die Datenverarbeitungsfunktionen der Profiler Utility (CONSOLIDATE,
READ, LIST und DELETE) können nicht ausgeführt
werden, wenn die Profil-Erstellung aktiv ist. Aus Performance-Gründen empfehlen wir,
auch den Natural Data Collector für diese Funktionen mit der folgenden
(Standard-)Parametereinstellung zu deaktivieren:
RDCSIZE=0
Einzelheiten zu den oben genannten Natural-Profilparametern finden Sie in den entsprechenden Abschnitten in der Parameter-Referenz-Dokumentation.
Programme, die mit dem Natural Optimizer kompiliert werden, erfordern die folgende Natural Optimizer-Optionseinstellung:
NODBG=OFF
(Siehe auch Liste der Optionen in der Natural Optimizer Compiler-Dokumentation.)
Der Natural-Nukleus muss "reentrant" und "reusable" sein. Verwenden Sie die folgenden Linkage-Optionen:
RENT,REUS
Standardmäßig werden Natural-Großrechner-Ressourcendateien in Natural Development Server (NDV) -Umgebungen wie NaturalONE oder Natural Studio nicht angezeigt. Für die Analyse der Profiler-Ereignisdaten muss von NaturalONE aus auf die Ressourcendatei zugegriffen werden. Dazu müssen Sie das NDV-Verhalten ändern.
Um Ressourcendateien in einer NDV-Umgebung anzuzeigen:
Kopieren Sie den Quellcode des NDV-User Exit NDV-SX03 aus der
Natural-System-Library SYSLIB in eine Benutzer-Library.
Bearbeiten Sie das Member. Passen Sie den Code folgendermaßen an:
DISPLAY-RESOURCES := 'Y' /* Display resources in NaturalONE/Studio
Katalogisieren Sie das Member unter dem Namen NDV-UX03.
Kopieren Sie es zurück in die System-Library SYSLIB oder in die
Library SYSLIBS oder SYSTEM.
Dieser Abschnitt beschreibt, wie Sie die Profiler Utility im Batch-Modus aufrufen und beenden.
Um die Profiler Utility aufzurufen:
Geben Sie das folgende Systemkommando in die primäre Batch-Eingabedatei für
Kommandos CMSYNIN ein:
PROFILER
Anmerkung
Nach dem Systemkommando PROFILER erwartet der
Profiler eine oder mehrere Zeilen mit Profiler-Schlüsselworteinträgen.
Um die Profiler Utility zu beenden:
Geben Sie das folgende Profiler-Schlüsselwort in die primäre Batch-Eingabedatei für
Kommandos CMSYNIN ein:
END-PROFILER
Oder:
END
Oder:
.
Die Profiler Utility im Batch-Modus liest die Profiler-Schlüsselwörter, die die
Profil-Erstellung aus der primären Batch-Eingabedatei für Kommandos CMSYNIN steuern. Der
Profiler liest die Eingabezeilen, bis er das Schlüsselwort END-PROFILER (oder
END oder .) erreicht.
Dieser Abschnitt behandelt die folgenden Themen:
Die Symbole, die in den in diesem Abschnitt gezeigten Syntaxdiagrammen verwendet werden, werden in der Systemkommando-Syntax in der Systemkommandos-Dokumentation erläutert.
Geben Sie ein Profiler Utility-Kommando mit einem der folgenden Syntaxformate ein:
| keyword[=value][,keyword[=value]]... |
Oder:
| keyword |
| [value] |
| ... |
Anmerkungen:
IM=D).
STACK ausgeführt werden soll oder wenn die Daten im
Forms-Modus (IM=F) eingegeben
werden.
Es gelten die folgenden Regeln:
Leerzeilen und Zeilen, die mit einem Stern (*) beginnen, werden
ignoriert.
Alle Zeichen in einer Zeile von /* bis */ oder bis zum
Ende der Zeile werden ignoriert.
Einige Schlüsselwörter haben keinen zugeordneten Wert.
Leerzeichen können vor oder nach dem Schlüsselwort oder Wert hinzugefügt werden.
Mehrere Schlüsselwörter in einer Zeile werden durch Kommas getrennt (gilt nur für das erste Syntaxformat).
Ein Wert kann in Apostrophe ('value')
eingeschlossen werden.
Ein Wert darf kein Komma enthalten.
Schlüsselwörter und Werte können in Groß- oder Kleinbuchstaben angegeben werden.
Die maximale Länge der Eingabezeile beträgt 78 Zeichen.
Die Profiler Utility kann mehrmals in einer Natural-Session ausgeführt werden. Zum
Beispiel wird sie zuerst mit den Funktionen INIT und START und
dann, nach der Ausführung eines Benutzerprogramms, mit der PAUSE-Funktion
ausgeführt.
Das folgende Natural-Batch-Beispiel (auf z/OS) zeigt die ursprüngliche JCL, die das
XPROF-Programm in der Library PRFDEMO (Zeilen in normaler
Schrift) ausführt, und die Eingabezeilen der Profiler Utility, die zum Profilieren des
XPROF-Programms verwendet werden (Zeilen fett gedruckt).
//CMSYNIN DD * PROFILER FUNCTION=INIT /* Initialize profiling RESOURCE=ON /* Write to resource RESOURCE-NAME='Demo01',REPLACE=YES /* Resource name RESOURCE-LIB=PRFDATA /* Resource library FUNCTION=START /* Start data collection END-PROFILER /* End Profiler input LOGON PRFDEMO XPROF 10000 FIN
Das folgende Natural Batch-Beispiel (auf z/OS) zeigt, wie der Profiler mit dem
Natural-Profilparameter STACK
ausgeführt werden soll.
STACK=( PROFILER FUNCTION:INIT: RESOURCE:ON: RESOURCE-LIB:PRFDATA: REPLACE:YES: FUNCTION:START: END-PROFILER; LOGON PRFDEMO )
Die wichtigsten Schlüsselwörter, die in der Syntax der Profiler Utility im Batch-Modus verwendet werden, werden in der folgenden Tabelle beschrieben. Alle zusätzlichen (untergeordneten) Schlüsselwörter, die bei einem Hauptschlüsselwort verfügbar sind, werden in den Abschnitten beschrieben, auf die in der Tabelle verwiesen wird. Im Allgemeinen muss ein untergeordneter Schlüsselwortwert dem Hauptschlüsselwortwert folgen, zum Beispiel:
FUNCTION=READ PRINT=ON
Ein untergeordnetes Schlüsselwort, das vor dem ersten FUNCTION- oder
FILTER-Schlüsselwort angegeben wurde, wird als untergeordnetes
Schlüsselwort des ersten FUNCTION- oder FILTER-Schlüsselworts
behandelt.
Die folgenden Hauptschlüsselwörter stehen zur Verfügung:
| Schlüsselwort | Wert | Profiler Utility-Funktion ausführen |
|---|---|---|
FUNCTION |
CONSOLIDATE |
Ressourcendaten konsolidieren (aggregieren). Siehe Ereignisdaten konsolidieren. |
COVERAGE |
Natural-Codeabdeckung initialisieren. Diese Funktion ist für die Sammlung von Code-Abdeckungsdaten obligatorisch. Siehe Initialisierung der Codeabdeckung (Code Coverage). | |
DELETE |
Eine Natural Profiler-Ressourcendatei löschen. Siehe Profiler-Ressourcendateien verwalten. | |
INIT |
Profil-Erstellung initialisieren. Diese Funktion ist für die Profil-Erstellungsdatenerfassung obligatorisch. Siehe Profilierung initialisieren. | |
LIST |
Profiler-Ressourcen auflisten. Siehe Profiler-Ressourcendateien auflisten unter Maintaining Profiler Resource Files. | |
PAUSE |
Datenerfassung pausieren. Siehe Datensammlung starten und anhalten. | |
READ |
Ressourcendaten lesen und bewerten. Siehe Ereignisdaten auswerten. | |
START |
Datensammlung starten bzw. erneut starten. Siehe Datensammlung starten und anhalten. | |
TEXT |
Zu den Ereignisdaten ein Benutzerereignis hinzufügen. Siehe Benutzerdefinierter Ereignisse schreiben. | |
FILTER |
Profiler-Filter definieren, um die Menge der Ereignisdaten zu reduzieren. Siehe Filtern zur Begrenzung der gesammelten Daten benutzen. | |
COUNT |
Filter für die Ereignisanzahl setzen. | |
EVENT |
Ereignis-, FNAT- und Statement-Filter setzen. | |
PROGRAM |
Library-, Programm und Zeilen-Filter setzen. | |
TIME |
CPU-Zeitfilter setzen. | |
RPC |
Einen Batch-Natural RPC-Server profilieren. Siehe Batch-Natural RPC-Server profilieren. | |
ON-ERROR |
Behandlung von Profiler-Fehlersituationen festlegen.
Standardwert: |
|
CONTINUE |
Profiling stoppen, aber Natural-Session fortsetzen. | |
TERMINATE |
Mit dem Natural Profiler eine Beendigung der Natural Session erzwingen. | |
TRACE |
0 - 10 |
Ebene der internen Ablaufverfolgung der
Profiler-Trace-Sitzung festlegen.
Das interne Trace enthält Informationen wie
Profiler-Fehler und wird in die Standardausgabe der Trace-Sitzung
( Standardwert: |
HELP |
Hilfe benutzen.
Es wird eine zusammengefasste Beschreibung der Profiler-Schlüsselwörter in die Standardausgabe geschrieben. |
|
INCLUDE |
object-name |
Der Name des Natural-Textobjekts, das Profiler-Eingabedaten
enthält.
Siehe auch Profiler-Eingaben aus Natural-Textobjekten einfügen. |
INCLUDE-LIB |
library-name |
Name der Natural-Library, die das mit dem INCLUDE-Schlüsselwort
angegebene Textobjekt enthält.
Wenn die Natural-Systemvariable Der Library-Name wird für alle folgenden Standardeinstellung: Wenn Siehe auch Profiler-Eingaben aus Natural-Textobjekten einfügen. |
END-PROFILER
oder
oder
|
Profiler-Eingabe beenden.
Das Schlüsselwort
|
|
ONLINE |
Die Online Profiler Utility in einem Batch-Lauf ausführen.
Diese Option dient der Kompatibilität mit früheren Natural-Versionen, als
die Profiler Utility im Batch-Modus das Profiler-Online-Menü startete. Wenn
diese Funktionalität weiterhin erforderlich ist, verwenden Sie
|
Dieser Abschnitt beschreibt die Ereignisse und Daten, die von der Profiler Utility im Batch-Modus verarbeitet werden.
Während einer Natural-Session können verschiedene Arten von Ereignissen auftreten (z. B. ein Programmstart), bei denen der Profiler ereignisspezifische Daten in einem Trace-Datensatz sammelt. Jedes Ereignis ist mit einem Ereignistyp verknüpft, d. h. einem Code mit einem oder zwei Buchstaben. Verwandte Ereignistypen werden zu einer Ereignisgruppe zusammengefasst, die durch einen Ein-Buchstaben-Code gekennzeichnet ist.
Folgende Ereignisse, Ereignistypen und Ereignisgruppen stehen zur Verfügung:
| Ereignis | Ereignistyp | Ereignisgruppe | Zeitpunkt des Auftretens |
|---|---|---|---|
| Session Initialization | SI |
S |
Wenn eine Natural-Batch-Session initialisiert wird. Da die Profiler-Monitor-Session nach der Trace-Session gestartet wird, kann dieses Ereignis nicht überwacht werden. |
| Session Termination | ST |
S |
Wenn eine Natural-Batch-Session beendet wird. Der Profiler überwacht dieses Ereignis immer. |
| Program Load | PL |
P |
Wenn ein Programm (Natural-Objekt) geladen wird oder wenn es sich bereits im Buffer Pool befindet. |
| Program Start | PS |
P |
Wenn ein Programm (Natural-Objekt) gestartet wird. |
| Program Termination | PT |
P |
Wenn ein Programm (Natural-Objekt) beendet wird. |
| Program Resume | PR |
P |
Wenn ein Programm (Natural-Objekt) die Kontrolle wieder übernimmt, nachdem ein anderes Natural-Objekt ausgeführt wurde, oder wenn die Kontrolle zur Ebene 0 zurückkehrt (kein Programm aktiv). |
| Program Information | PI |
P |
Wenn auf ein Programm (Natural-Objekt) zum ersten Mal zugegriffen wird. Dieses Ereignis wird nur bei der Natural-Codeabdeckung ausgelöst. |
| Before Database Call | DB |
D |
Bevor ein Datenbankaufruf ausgeführt wird. |
| After Database Call | DA |
D |
Nachdem ein Datenbankaufruf ausgeführt worden ist. |
| Before Terminal I/O | IB |
I |
Bevor eine Terminal-Ein-/Ausgabe ausgeführt wird. |
| After Terminal I/O | IA |
I |
Nachdem eine Terminal-Ein-/Ausgabe ausgeführt worden ist. |
| Before External Program Call | CB |
C |
Bevor ein externer Programmaufruf
(CALL-Statement) ausgeführt wird.
|
| After External Program Call | CA |
C |
Nachdem ein externer Programmaufruf
(CALL-Statement) ausgeführt worden ist.
|
| Runtime Error | E |
E |
Wenn ein Natural-Laufzeitfehler aufgetreten ist. |
| Natural Statement | NS |
N |
Wenn ein Natural-Statement ausgeführt wird. Aus technischen
Gründen gibt es keine Eins-zu-Eins-Beziehung zwischen einem
Natural-Quellcode-Statement und dem entsprechenden Objektcode im katalogisierten
Objekt. Daher können mehrere Natural-Statements zu einem
NS-Ereignis zusammengeführt werden, und umgekehrt kann ein
Natural-Statement mehrere NS-Ereignisse abdecken.
|
| Inbound RPC Message | RI |
R |
Wenn das Natural RPC Server Layer die Client-Anforderung empfängt. |
| Start of RPC Request Execution | RS |
R |
Wenn das Natural RPC Server Layer das Natural-Server-Programm aufruft. |
| Outbound RPC Message | RO |
R |
Wenn der Natural RPC Server das Ergebnis an den Client zurückgibt. |
| RPC Wait for Client | RW |
R |
Wenn der Natural RPC Server auf die nächste Nachricht vom Client wartet. |
| User-Defined Event | U |
U |
Wenn ein benutzerdefiniertes Ereignis generiert wurde. |
| Monitor Pause | MP |
M |
Wenn die Datensammlung angehalten wird.
Ein Pausenereignis kann durch eine explizite Pausenanforderung, zu Beginn eines Blockfilters oder wenn der Datenpool voll ist, verursacht werden. Die Dauer einer Pause wird bei der Analyse der Anwendungs-Performance nicht berücksichtigt. |
Mit jedem gesammelten Ereignis werden ein CPU- und ein Ereigniszeitstempel aufgezeichnet. Im Allgemeinen wird zu Beginn eines Ereignisses ein Zeitstempel genommen. Die Dauer eines Ereignisses entspricht daher der Zeit, die zwischen dem Zeitstempel des Ereignisses und dem Zeitstempel des folgenden Ereignisses vergeht.
Dieser Abschnitt beschreibt die von der Profiler Utility gesammelten Daten:
- Allgemeine Daten
Die folgenden Datenelemente werden bei jedem Ereignis gesammelt:
Ereigniszähler
Ereignistyp
Ereigniszeit in Mikrosekunden
Session-CPU-Zeit in Mikrosekunden
Trace-Session-Kennung
Natural Security-Benutzergruppenkennung
Natural-Benutzerkennung
Natural-Anwendungsname
Programm-Library
Programmname
Programmebene
Copycode-Library
Copycode-Name
Statement-Zeilennummer
Statement-Op-Code
Coverage Flag (für Natural-Codeabdeckung)
Anmerkungen:
- Die für die Datensammlung aufgewendete Zeit (Monitor-CPU-Zeit) wird separat gemessen und aus der CPU-Zeit der Session herausgenommen.
- Die Ereignisse werden gezählt, bevor eine Filterung oder Probenahme (Sampling) durchgeführt wird. Daher erhalten die Ereignisse im Allgemeinen die gleichen Zählergebnisse, unabhängig davon, welche Filterung oder Probenahme verwendet wird.
- Statement-Ereignisse werden nur gezählt, wenn das Ereignisfilter-Schlüsselwort
STATEMENT=COUNTverwendet wird.- Monitor Pause-Ereignisse werden nicht gezählt.
- Natural-Codeabdeckung sammelt nur
NS- undPI-Ereignisse- Natural-Codeabdeckung sammelt keine Zeitwerte.
- Für jedes Objekt, auf das zugegriffen wird, und für alle (rekursiv) im Objekt enthaltenen Copycodes wird ein
PI-Ereignis gesammelt.- Ereignisspezifische Daten:
Die folgenden Daten werden nur bei folgenden Ereignissen erhoben:
Ereignis Datenelemente Session Initialization (Session-Initialisierung)
Keines Session Termination (Session-Beendigung)
Beendigung-Rückgabecode
Natural-Beendigung-Meldungscode NAT99nn
Name des Back-End-Programms
Monitor-CPU-Zeit im MikrosekundenProgram Load (Laden eines Programms)
Name des zu ladenden Programms
Name der Load Library
AufruftypProgram Resume (Programm-Wiederaufnahme)
Keines Program Start/Termination (Programm-Start/Beendigung)
Programmtyp
Datenbankkennung der Programm-Library
Dateinummer der Programm-LibraryProgram Information (Programminformationen)
Programmtyp
Anzahl der Statements in dem Programm oder im Copycode
Erstes Statement Item
INCLUDE-Zeilennummer
Parent-Copycode-KennungDatabase Call (Datenbankaufruf)
Datenbanktyp
Kommandocode
Kommandokennung
Datenbankkennung DBID
Dateinummer
Antwortcode (EreignistypDA)
Fehler-Subcode (EreignistypDA)
Adabas-Kommandozeit (EreignistypDA)Terminal I/O (Terminal-Ein-/Ausgabe)
Anzahl gesendeter Bytes
Anzahl gelesener Bytes
Zugeordneter Gesamtspeicher
Länge des komprimierten Session-SpeichersExternal Program Call (externer Programmaufruf)
Name des aufgerufenen Programms
Aufrufmodus, z.B. dynamischer oder statischer Modus
Programm-Link-Ort
Parametertyp, z.B. Referenz oder Wert
Rückmeldecode (EreignistypCA)Runtime Error (Laufzeitfehler)
Natural-Systemfehlermeldungscode
Externer Abend Code
Name des FehlerbehandlungsprogrammsNatural Statement Profiling: Keines Natural-Codeabdeckung: Statement Item Identifier (GP Offset)
Start of RPC Request Execution (Beginn der RPC-Anforderungsausführung)
Umgebung (
C= Client,S= Server)
Name des Subprogramms
Adabas-Benutzerkennung (ETID)
Status der Konversation
Anmelde-Indikator (Y= Anmeldung durchgeführt)
Impersonierung-Indikator der RPC-Anforderung (Y= Impersonierung durchgeführt)Outbound/Inbound RPC Message / RPC Wait for Client (Ausgehende/eingehende RPC-Nachricht / RPC Warten auf Client)
Umgebung (
C= Client,S= Server)
Transportprotokoll
RPC-Funktion
Typ der Client-Benutzerkennung
Länge der Nachricht
RPC-Rückgabecode
Externe Konversationskennung
Client-Benutzerkennung
Serverknoten (EreignistypenROundRW)
Servername (EreignistypenROundRW)User-Defined Event Benutzerdefiniertes Ereignis
Subtyp des benutzerdefinierten Ereignisses
Bis zu 249 Bytes benutzerdefinierte InformationenMonitor Pause Art der Monitorpause Mögliche Werte:
RMonitorpause angefordert. Dieser Wert wird auch gesetzt, wenn die Sitzung mit der Pause-Option initialisiert wird. FBeginn eines Blocks von herausgefilterten Ereignissen. Blockfilter sind: Library, Programm, Zeile, FNAT, Ereignisanzahl oder Zeitfilter. WDie Trace-Session wartet, weil der Daten-Pool voll ist.
Die INIT-Funktion der Profiler Utility initialisiert die Profil-Erstellung.
Die INIT-Funktion muss vor einer der Profiler Utility-Funktionen
START, PAUSE oder TEXT oder einem Profiler-Filter
ausgeführt werden.
Syntax der INIT-Funktion:
FUNCTION=INIT |
[RESOURCE={ON|OFF}]
|
[RESOURCE-NAME=resource-name]
|
[RESOURCE-LIB=library-name]
|
[REPLACE={YES|NO}]
|
[SAMPLING={ON|OFF}]
|
[INTERVAL={100|interval-time}]
|
[CONSOLIDATE={ON|OFF}]
|
[TRANSACTION={ON|OFF}]
|
[WAIT-FULL={60|wait-full-time}]
|
[WAIT-EMPTY={60|wait-empty-time}]
|
[CMPRMIN=data-set-name]
|
[CMSYNIN=data-set-name]
|
[TRACE-EVENT={ON|OFF}]
|
[TRACE-MONITOR={3|trace-level}]
|
[TRACE-CONSOLIDATE={ON|OFF}]
|
Syntax-Beschreibung:
| Schlüsselwort für INIT | Wert | Beschreibung |
|---|---|---|
RESOURCE |
Gibt an, ob die Ereignisdaten in eine Natural
Profiler-Ressourcendatei (NPRF oder NPRC) geschrieben
werden sollen.
|
|
ON |
Die Ereignisdaten werden in eine Natural Profiler-Ressourcendatei geschrieben und können mit NaturalONE oder mit den Datenverarbeitungsfunktionen der Natural Profiler Utility analysiert werden. | |
OFF |
Die Ereignisdaten werden nicht in eine Natural Profiler-Ressourcendatei geschrieben. Diese Option kann verwendet werden, wenn nur der Profiler-Ereignis-Trace oder die Statistiken erforderlich sind. | |
RESOURCE-NAME |
resource-name |
Der Name der Profiler-Ressourcendatei, in der die
Ereignisdaten für eine spätere Analyse gespeichert werden. Wenn die Erweiterung
.nprf (Natural Profiler-Ressourcendatei) oder .nprc
(Natural Profiler-Ressource, konsolidiert) nicht angegeben wurde, wird sie
automatisch hinzugefügt. Welche Erweiterung verwendet wird, hängt vom
Schlüsselwort CONSOLIDATE ab.
Standardeinstellung:
Dabei ist und yyyymmdd_hhiiss ist das Datum und die Uhrzeit der Ressourcengenerierung. |
RESOURCE-LIB |
library-name |
Der Name der Natural-Library, der die Ressource zugeordnet
ist.
Standardwert: Der Name der aktuellen Library. |
REPLACE |
Gibt an, ob die Ressource ersetzt wird, wenn sie bereits vorhanden ist. | |
YES |
Ressource ersetzen, falls vorhanden. | |
NO |
Ressource nicht ersetzen. Wenn die Ressource bereits vorhanden ist, wird eine Nachricht geschrieben und es wird keine Profil-Erstellung durchgeführt. | |
SAMPLING |
Gibt an, ob die CPU-Zeit-Probenahme (Sampling) des Profilers aktiviert ist. Die Probenahme kann die Anzahl der überwachten Ereignisse drastisch reduzieren, wobei fast die gleichen CPU-Zeitergebnisse erzielt werden. Siehe Stichprobentechnik (Natural Profiler Sampling). | |
ON |
Sampling aktivieren. | |
OFF |
Sampling deaktivieren. | |
INTERVAL |
interval-time |
Das Stichprobenintervall bestimmt, bei welchen
CPU-Zeitstempel Ereignisse gesammelt werden. Wenn das Stichprobenintervall größer
ist, werden weniger Ereignisse gesammelt. Wenn das Abtastintervall kleiner ist,
sind die resultierenden CPU-Zeiten genauer.
Gültige Werte für
Einheit: Mikrosekunden |
CONSOLIDATE |
Gibt an, ob die Ereignisdaten konsolidiert (aggregiert) werden, bevor sie in die Ressourcendatei geschrieben werden. Siehe Datenkonsolidierung, Codeabdeckung und Datenverarbeitung im Abschnitt Grundlegendes Konzept der Profiler Utility. | |
ON |
Die Ereignisdaten werden konsolidiert und in eine NPRC-Ressourcendatei (Natural Profiler Resource Consolidated) geschrieben. | |
OFF |
Die Ereignisdaten werden nicht konsolidiert in eine NPRF-Ressourcendatei (Natural Profiler Resource File) geschrieben. | |
TRANSACTION |
Diese Option gilt nur, wenn CONSOLIDATE (siehe
oben) auf ON gesetzt ist.
Gibt an, ob Transaktionsbezeichner (Identifier) zu den konsolidierten Ereignisdaten hinzugefügt werden. |
|
ON |
Transaktionsbezeichner werden den konsolidierten
Ereignisdaten hinzugefügt.
Transaktionsbezeichner sind eine Voraussetzung für die Bewertung der Transaktionsantwortzeit. Siehe Transaktionszusammenfassung. Anmerkung |
|
OFF |
Es werden keine Transaktionsbezeichner zu den konsolidierten Ereignisdaten hinzugefügt. | |
WAIT-FULL |
wait-full-time
|
Gibt an, wie lange die Trace-Session wartet, wenn der
Profiler-Daten-Pool voll ist. Wenn das Limit erreicht ist und immer noch kein
freigegebener Platz verfügbar ist, wird Natural beendet (ABEND S0C1).
Der Wert verhindert, dass die Trace-Session endlos auf eine unerwartet ausgefallene Monitor-Session wartet. Gültige Werte für
Einheit: Sekunden |
WAIT-EMPTY |
wait-empty-time |
Gibt an, wie lange die Profiler-Monitor-Session wartet, wenn
der Profiler-Daten-Pool leer ist und die Trace-Session noch aktiv ist. Wenn das
Limit erreicht ist, wird eine Nachricht geschrieben und das Profiling gestoppt.
Ein Wert von Null ( Gültige Werte für
0 gesetzt. Siehe Batch-Natural RPC-Server
profilieren und Profil-Erstellung einer
Großrechner-Session aus Natural Studio.
Einheit: Sekunden |
CMPRMIN |
data-set-name |
Gibt den Namen des Eingabe-Dataset für dynamische Parameter
für die Profiler-Monitor-Session an. Siehe Monitor-Session
CMPRMIN.
Standardwert: |
CMSYNIN |
data-set-name |
Gibt den Namen des primären Kommandoeingabe-Dataset für die Profiler-Monitor-Session an. Siehe Monitor-Session CMSYNIN. Standardwert: |
TRACE-EVENT |
Gibt an, ob das Profiler-Trace in die Standardausgabe der
Profiler-Monitor-Session (MONPRINT-Dataset) geschrieben wird. Siehe
Ereignis-Trace.
|
|
ON |
Das Profiler-Ereignis-Trace schreiben. | |
OFF |
Das Profiler-Ereignis-Trace nicht schreiben. | |
TRACE-MONITOR |
trace-level
|
Legt die Ebene des internen Tracing der
Profiler-Monitor-Session fest. Das interne Trace enthält Informationen wie
Profiler-Fehler und wird in die Standardausgabe der Monitor-Session
(MONPRINT-Dataset) geschrieben. Siehe Interner
Trace.
Gültige Trace-Ebenen: |
TRACE-CONSOLIDATE |
Gibt an, ob das Profiler-Konsolidierungs-Trace in die
Standardausgabe geschrieben wird. Die Konsolidierungsverfolgung kann nur
geschrieben werden, wenn CONSOLIDATE=ON angegeben ist. Siehe
Konsolidierungs-Trace.
|
|
ON |
Das Profiler-Konsolidierungs-Trace schreiben. | |
OFF |
Das Profiler-Konsolidierungs-Trace nicht schreiben. |
FUNCTION=INIT /* Initialize Profiling RESOURCE=ON /* Write to resource file RESOURCE-NAME='Test' /* Resource name RESOURCE-LIB=PRFDATA /* Resource library REPLACE=YES /* Replace resource SAMPLING=ON /* Use sampling INTERVAL=100 /* Sampling interval CONSOLIDATE=OFF /* Do not consolidate the data TRANSACTION=OFF /* Do not add transaction identifiers WAIT-FULL=60 /* Wait sec if pool full WAIT-EMPTY=60 /* Wait sec if pool empty CMPRMIN=PRFPARMS /* CMPRMIN for monitor session TRACE-EVENT=ON /* Trace events TRACE-MON=3 /* Trace level monitor session
Die Funktion COVERAGE der Profiler Utility initialisiert die Messung der
Natural-Codeabdeckung. Die COVERAGE-Funktion muss vor einer der Profiler
Utility-Funktionen START, PAUSE oder TEXT oder
einem Profiler-Filter ausgeführt werden.
Syntax von COVERAGE:
FUNCTION=COVERAGE |
[RESOURCE={ON|OFF}]
|
[RESOURCE-NAME=resource-name]
|
[RESOURCE-LIB=library-name]
|
[REPLACE={YES|NO}]
|
[WAIT-FULL={60|wait-full-time}]
|
[WAIT-EMPTY={60|wait-empty-time}]
|
[CMPRMIN=data-set-name]
|
[CMSYNIN=data-set-name]
|
[TRACE-EVENT={ON|OFF}]
|
[TRACE-MONITOR={3|trace-level}]
|
[TRACE-COVERAGE={ON|OFF}]
|
Syntax-Beschreibung:
| Schlüsselwort für COVERAGE | Wert | Beschreibung |
|---|---|---|
RESOURCE |
Gibt an, ob Codeabdeckungsdaten in ein Natural Code Coverage Resource File (NCVF) geschrieben werden sollen. | |
ON |
Codeabdeckungsdaten werden in eine Natural-Code-Coverage-Ressourcendatei geschrieben und können mit NaturalONE oder mit den Datenverarbeitungsfunktionen der Natural Profiler Utility analysiert werden. | |
OFF |
Es werden keine Codeabdeckungsdaten werden in eine
Natural-Code-Coverage-Ressourcendatei geschrieben.
Diese Option kann verwendet werden, wenn nur das Profiler-Ereignis-Trace oder die Statistiken erforderlich sind. |
|
RESOURCE-NAME |
resource-name |
Der Name der Natural-Code-Coverage-Ressourcendatei, in der
Codeabdeckungsdaten für eine spätere Analyse gespeichert werden. Wenn die
Erweiterung .ncvf (Natural code coverage resource file) nicht
angegeben wurde, wird sie automatisch hinzugefügt.
Standardeinstellung:
Dabei ist und yyyymmdd_hhiiss ist das Datum und die Uhrzeit der Ressourcengenerierung. |
RESOURCE-LIB |
library-name |
Der Name der Natural-Library, der die Ressource zugeordnet
ist.
Standardwert: Der Name der aktuellen Library. |
REPLACE |
Gibt an, ob die Ressource ersetzt wird, wenn sie bereits vorhanden ist. | |
YES |
Ressource ersetzen, falls vorhanden. | |
NO |
Ressource nicht ersetzen. Wenn die Ressource bereits vorhanden ist, wird eine Nachricht geschrieben und es wird kein Code Coverage durchgeführt. | |
WAIT-FULL |
wait-full-time
|
Gibt an, wie lange die Trace-Session wartet, wenn der
Profiler-Daten-Pool voll ist. Wenn das Limit erreicht ist und immer noch kein
freigegebener Platz verfügbar ist, wird Natural beendet (ABEND S0C1).
Der Wert verhindert, dass die Trace-Session endlos auf eine unerwartet ausgefallene Monitor-Session wartet. Gültige Werte für
Einheit: Sekunden |
WAIT-EMPTY |
wait-empty-time |
Gibt an, wie lange die Profiler-Monitor-Session wartet, wenn
der Profiler-Daten-Pool leer ist und die Trace-Session noch aktiv ist. Wenn das
Limit erreicht ist, wird eine Nachricht geschrieben und das Profiling gestoppt.
Ein Wert von Null ( Gültige Werte für
0 gesetzt. Siehe Batch-Natural RPC-Server
profilieren und Profil-Erstellung einer
Großrechner-Session aus Natural Studio.
Einheit: Sekunden |
CMPRMIN |
data-set-name |
Gibt den Namen des Parameter-Eingabe-Dataset für die
Profiler-Monitor-Session an. Siehe Monitor-Session
CMPRMIN.
Standardwert: |
CMSYNIN |
data-set-name |
Gibt den Namen des primären Kommando-Eingabe-Dataset für die
Profiler-Monitor-Session an. Siehe Monitor-Session
CMSYNIN.
Standardwert: |
TRACE-EVENT |
Gibt an, ob das Profiler-Ereignis-Trace in die
Standardausgabe der Profiler-Monitor-Session (MONPRINT-Dataset)
geschrieben wird. Siehe Ablaufverfolgung (Tracing) beim Messen der
Natural-Codeabdeckung.
|
|
ON |
Das Profiler-Ereignis-Trace schreiben. | |
OFF |
Das Profiler-Ereignis-Trace nicht schreiben. | |
TRACE-MONITOR |
trace-level
|
Legt die Ebene des internen Tracing der
Profiler-Monitor-Session fest. Das interne Trace enthält Informationen wie
Profiler-Fehler und wird in die Standardausgabe der Monitor-Session
(MONPRINT-Dataset) geschrieben. Siehe Interner
Trace.
Gültige Trace-Ebenen: |
TRACE-COVERAGE |
Gibt an, ob das Profiler-Codeabdeckungs-Trace in die Standardausgabe geschrieben wird. Siehe Ablaufverfolgung (Tracing) beim Messen der Natural-Codeabdeckung. | |
ON |
Das Profiler-Konsolidierungs-Trace schreiben. | |
OFF |
Das Profiler-Konsolidierungs-Trace nicht schreiben. |
FUNCTION=COVERAGE /* Initialize code coverage RESOURCE=ON /* Write to resource file RESOURCE-NAME='Test' /* Resource name RESOURCE-LIB=COVDATA /* Resource library REPLACE=YES /* Replace resource WAIT-FULL=60 /* Wait sec if pool full WAIT-EMPTY=60 /* Wait sec if pool empty CMPRMIN=PRFPARMS /* CMPRMIN for monitor session TRACE-EVENT=ON /* Trace events TRACE-MON=3 /* Trace level of monitor session TRACE-COVERAGE=ON /* Trace coverage data
Der Profiler muss initialisiert werden, bevor die Datensammlung gestartet oder angehalten werden kann. Da die Datensammlung nach der Initialisierung angehalten wird, muss sie in irgendeiner Weise gestartet werden, damit Ereignisdaten aufgezeichnet werden.
Sie können die Datensammlung mittels einer der folgenden Methoden starten und anhalten:
Die Profiler Utility-Funktionen START und PAUSE werden
verwendet, um die Datensammlung zu starten und anzuhalten. Es gilt die folgende
Syntax:
|
|
Syntax-Beschreibung:
| Schlüsselwort für START | Wert | Beschreibung |
|---|---|---|
COUNT |
count-number
|
Setzt den Ereigniszähler des nächsten überwachten
Ereignisses auf den angegebenen Wert.
Gültige Werte für
Der Ereigniszähler bleibt unverändert, wenn ein Wert von Null
( |
Die folgenden Natural-Programme stehen in der System-Library SYSPRFLR
bereit, um Profiler Utility-Funktionen auszuführen:
| Programm | Beschreibung |
|---|---|
| PRFSTART | Die Datensammlung starten. |
| PRFPAUSE | Die Datensammlung anhalten. |
| PRFSTATE | Den Status der Datensammlung abfragen. |
| PRFFCT | Eine Profiler Utility-Funktionen ausführen:
START, PAUSE oder STATE.
|
Um Profiler Utility-Programme zu benutzen:
Melden Sie sich bei der Library SYSPRFLR an oder kopieren Sie die
Programme in die Library SYSTEM, in die entsprechende Steplib-Library
oder in die erforderliche Library.
Wenn PRFFCT verwendet wird, muss auch die
Anwendungsprogrammierschnittstelle USR8210N kopiert werden (siehe
folgenden Abschnitt).
Falls PRFFCT in einer Client/Server-Umgebung verwendet wird,
kopieren Sie PRFFCT in die Client-Library und USR8210N
in die Server-Library.
AnmerkungPRFFCT erwartet als Eingabewert START,
PAUSE oder STATE, um die entsprechende Funktion
auszuführen.
Um die Datensammlung zu starten:
Führen Sie das folgende Programm aus:
PRFSTART
Oder:
PRFFCT START
Um die Datensammlung anzuhalten:
Führen Sie das folgende Programm aus:
PRFPAUSE
Oder:
PRFFCT PAUSE
Um den aktuellen Status der Datensammlung abzufragen:
Führen Sie das folgende Programm aus:
PRFSTATE
Oder:
PRFFCT STATE
Die Datensammlung kann von der profilierten Natural-Anwendung aus gestartet und
angehalten werden, indem die Anwendungsprogrammierschnittstelle (API)
USR8210N aufgerufen wird. Die API kann auch verwendet werden, um den
aktuellen Status des Überwachungsprozesses zu ermitteln. Die API wird in der Library
SYSEXT ausgeliefert. Weitere Informationen siehe SYSEXT
Utility.
Um die API zu benutzen:
Kopieren Sie das Subprogramm USR8210N in die Library
SYSTEM, in die entsprechende Steplib-Library oder in die gewünschte
Library.
Anmerkung
Die API USR8210N erwartet als erster Parameter den Wert
START, PAUSE oder STATE, um die
entsprechende Funktion auszuführen. Die Parameterwerte können in Groß- oder
Kleinbuchstaben angegeben werden. Bei der Rückkehr enthält P-RETURN
den Rückgabecode und P-MESSAGE die Erfolgs- oder
Fehlermeldung.
Um die Datensammlung zu starten:
Benutzen Sie die API mit dem CALLNAT-Statement:
CALLNAT 'USR8210N' 'START' P-RETURN P-MESSAGE /* Start Profiler
Um die Datensammlung anzuhalten:
Benutzen Sie die API mit dem CALLNAT-Statement:
CALLNAT 'USR8210N' 'PAUSE' P-RETURN P-MESSAGE /* Pause Profiler
Um den aktuellen Status der Datensammlung abzufragen:
Benutzen Sie die API mit dem CALLNAT-Statement:
CALLNAT 'USR8210N' 'STATE' P-RETURN P-MESSAGE /* Get Profiler state
Der Status ist im Feld P-RETURN codiert:
| P-RETURN | Beschreibung |
|---|---|
0
|
Die Datensammlung mit dem Natural Profiler ist gestartet. |
1 |
Die Datensammlung mit dem Natural Profiler ist angehalten. |
Filter spielen eine wichtige Rolle bei der Reduzierung der Menge der gesammelten Daten. Folgende Filter stehen zur Verfügung:
Anmerkung
Der Profiler muss initialisiert werden, bevor Einstellungen auf einen bestimmten
Filter angewendet werden können.
Der Profiler-Ereignisfilter gibt an, welche Ereignisse gesammelt werden. Darüber hinaus bestimmt es, ob Ereignisdaten aufgezeichnet werden, während Natural-Systemprogramme ausgeführt werden.
Syntax des Ereignisfilters:
FILTER=EVENT |
[EVENT={[event-type]...|ALL}
|
[STATEMENT={ON|OFF|COUNT}]
|
[FNAT={ON|OFF}
|
Syntax-Beschreibung:
| Schlüsselwort für EVENT | Wert | Beschreibung |
|---|---|---|
EVENT |
Gibt an, welche Ereignisse gesammelt werden. | |
event-type |
Jedes Ereignis wird mit einem ein- oder zweistelligen
Schlüssel codiert. Mehrere Ereignisse werden durch Leerzeichen getrennt. Es
werden nur die angegebenen Ereignisse aufgezeichnet. Wenn kein Ereignis
angegeben wird, überwacht der Profiler nur die Session- und Pausenereignisse.
Mögliche Ereigniseinträge sind: Notes:
|
|
ALL |
Alle Ereignisse werden aufgezeichnet; das heißt, die
Definition ist äquivalent zu EVENT=DB DA PL PS PT PR IB IA E CB CA U RS RI RO Vorsicht |
|
STATEMENT |
Gibt an, ob Natural-Statement-Ereignisse (NS)
gesammelt werden.
|
|
ON |
Natural-Statement-Ereignisse (NS) werden
gesammelt, aber nicht gezählt. Es werden nur Nicht-Statement-Ereignisse gezählt.
Natural-Statement-Ereignisse erhalten die gleiche Anzahl wie das vorherige
Ereignis.
|
|
OFF |
Natural-Statement-Ereignisse (NS) werden nicht
gesammelt.
|
|
COUNT |
Natural-Statement-Ereignisse (NS) werden
gesammelt und gezählt, was bedeutet, dass das Ereigniszählerfeld im
Ereignisdatensatz mit jedem Statement-Ereignis erhöht wird. Diese Option kann zu
einer schlechteren Performance führen. Siehe Profiler-Performance im
Batch-Modus.
|
|
FNAT |
Gibt an, ob Ereignisdaten aufgezeichnet werden, während Natural-Systemprogramme ausgeführt werden. | |
ON |
Ereignisdaten werden aufgezeichnet, während Natural-Systemprogramme ausgeführt werden. | |
OFF |
Ereignisdaten werden nicht aufgezeichnet, während Natural-Systemprogramme ausgeführt werden. |
- Standardfilterwert für die Profil-Erstellung
Standardmäßig (wenn der Ereignisfilter nicht angegeben ist) werden alle Ereignisse außer Natural-Statement-Ereignissen gesammelt und Ereignisdaten von Natural-Systemprogrammen werden nicht aufgezeichnet:
FILTER=EVENT /* Set event filter EVENT=ALL /* All events STATEMENT=OFF /* Do not collect statements FNAT=OFF /* No FNAT- Standardfilterwert für Codeabdeckung
Standardmäßig (wenn der Ereignisfilter nicht angegeben ist) werden nur Programmstart- und Natural-Statement-Ereignisse gesammelt. Ereignisdaten von Natural-Systemprogrammen werden nicht aufgezeichnet:
FILTER=EVENT /* Set event filter EVENT=PS /* Program start only STATEMENT=ON /* Collect statements FNAT=OFF /* No FNATDie Codeabdeckung funktioniert nicht korrekt, wenn Programmstart- oder Natural-Statement-Ereignisse nicht gesammelt werden. Wenn andere Ereignisse überwacht werden, werden sie im Trace angezeigt, aber von der Codeabdeckung ignoriert.
- Beispiel für einen Ereignisfilter
FILTER=EVENT /* Set event filter EVENT=D PS PR /* Database and program start/resume events STATEMENT=ON /* Collect statements (no count) FNAT=OFF /* No FNAT
Der Profiler-Programmfilter gibt die Libraries, Programme (Natural-Objekte) und Programmzeilen an, für die Ereignisdaten gesammelt werden. Standardmäßig (wenn der Programmfilter nicht angegeben ist) werden die Daten aller Libraries, Programme und Zeilen gesammelt.
Syntax des Programfilters:
FILTER=PROGRAM |
[LIBRARY=library-name]
|
[PROGRAM=program-name]
|
[LINE-FROM={0|start-number}
|
[LINE-TO={0|end-number}
|
Syntax-Beschreibung:
Das folgende Beispiel überwacht die Zeilen 0500 bis 2000 in
allen Natural-Objekten, die in der Library PRFDEMO mit X
beginnen.
FILTER=PROGRAM /* Set program filter LIBRARY=PRFDEMO /* Monitored library PROGRAM=X* /* Monitored program LINE-FROM=500 /* Monitor from line 0500 LINE-TO=2000 /* Monitor to line 2000
Der Profiler-Zählfilter (Count Filter) gibt die Ereigniszähler an, für die Daten gesammelt werden. Standardmäßig (wenn der Zählfilter nicht angegeben ist) werden Daten für jede Ereignisanzahl gesammelt.
Wenn der Ereignisfilter STATEMENT=ON gesetzt ist, kann sich der Zählfilter
nur auf Nicht-Statement-Ereignisse beziehen, da Statement-Ereignisse keine eindeutige
Anzahl erhalten. Die Nicht-Statement-Ereignisse haben die gleiche Anzahl wie bei
STATEMENT=OFF und in beiden Fällen kann der gleiche Zählfilter verwendet
werden.
Syntax des Zählfilters:
FILTER=COUNT |
[FROM={0|minimum-count}
|
[TO={0|maximum-count}
|
Syntax-Beschreibung:
Eine Profil-Erstellung mit STATEMENT=OFF hat gezeigt, dass zwischen den
Ereignissen viel CPU-Zeit mit den Zählern 1200 bis 1400
verbracht wurde. Jetzt soll dieser Bereich, einschließlich der Statements, detaillierter
analysiert werden. Mit STATEMENT=COUNT würden auch die Statements gezählt
und die Ereignisse würden andere Zählerwerte erhalten. Aber mit
STATEMENT=ON werden die Statements nicht gezählt und die Zählerwerte
können verwendet werden, um die Datensammlung einzuschränken.
FILTER=COUNT /* Set count filter FROM=1200 /* Monitor from event count 1200 TO=1400 /* Monitor to event count 1400
Der Profiler-Zeitfilter gibt die CPU-Zeiten (Einheit: 1/100 Sekunden) an, für die Daten gesammelt werden. Standardmäßig (wenn der Zeitfilter nicht angegeben ist) werden Daten für jede CPU-Zeit gesammelt.
Syntax des Zeitfilters:
FILTER=TIME |
[FROM={0|minimum-time}
|
[TO={0|maximum-time}
|
Syntax-Beschreibung:
In dem folgenden Beispiel werden alle Ereignisse überwacht, die nach einer Sekunde für eine Dauer von zwei Sekunden auftreten:
FILTER=TIME /* Set time filter FROM=100 /* Monitor from CPU second 1.00 TO=300 /* Monitor to CPU second 3.00
Bei der Sampling-Methode wird ein statistischer Ansatz verwendet, bei dem Daten durch Stichprobennahme gesammelt werden. Das Sampling reduziert die Menge der in die Ressourcendatei geschriebenen Daten erheblich und behält annähernd die gleichen CPU-Zeiten bei wie ohne Sampling.
Die Stichprobennahme steht bei der Profil-Erstellung (Profiling), aber nicht bei der Messung der Codeabdeckung (Code Coverage) zur Verfügung.
Allgemeine Informationen zur Stichprobennahme finden Sie unter Stichprobentechnik (Natural Profiler Sampling) im Kapitel Grundlegendes Konzept der Profiler Utility.
Um das Sampling zu aktivieren:
Geben Sie die folgenden untergeordneten Schlüsselwörter ein, die der
INIT-Funktion der Profiler Utility zugeordnet sind:
SAMPLING=ON INTERVAL=nnn
Dabei ist nnn das Stichprobenintervall in
Mikrosekunden ist.
Anmerkung
Standardmäßig (wenn SAMPLING nicht angegeben ist) werden keine
Stichproben der Daten genommen. Wenn SAMPLING=ON angegeben ist, aber
kein INTERVAL, beträgt das Standard-Stichprobenintervall 100
Mikrosekunden.
Ein benutzerdefiniertes Ereignis kann aus einem Natural-Programm mithilfe des folgenden Natural-Statement generiert werden:
CALL 'CMRDC' 'U' USER-DATA
Das erste Zeichen der USER-DATA wird als Subtyp des benutzerdefinierten
Ereignisses behandelt. Die restlichen Zeichen sind der Text des benutzerdefinierten
Ereignisses. Weitere Informationen finden Sie unter Benutzerdefinierte
Ereignisse in der SYSRDC
Utility-Dokumentation.
Anmerkungen:
Die Funktion FUNCTION=TEXT der Profiler Utility wird verwendet, um
benutzerdefinierte Ereignisse zu schreiben. Es gilt die folgende Syntax:
FUNCTION=TEXT |
[TEXT=text]
|
[TYPE=character]
|
Syntax-Beschreibung:
| Schlüsselwort für TEXT | Wert | Beschreibung |
|---|---|---|
TEXT |
text |
Der Text text wird
dem Profiler-Trace als benutzerdefiniertes Ereignis hinzugefügt. Wenn mehrere
TEXT-Schlüsselwörter angegeben sind, werden die entsprechenden
Werte verkettet. Die maximale Textgröße beträgt 249 Bytes. Zusätzliche Zeichen
werden abgeschnitten.
Standardwert: keiner (Leerzeichen) |
TYPE |
character |
Das alphanumerische Zeichen
character gibt den Subtyp des
benutzerdefinierten Ereignisses an. Der Subtyp ist Teil der ereignisspezifischen
Daten. Der Ereignistyp eines benutzerdefinierten Ereignisses ist immer
U gefolgt von einem Leerzeichen.
Standardwert: Leerzeichen |
Verwenden Sie die folgende Ereignisfiltereinstellung, wenn Sie nur die
benutzerdefinierten Ereignisse überwachen möchten, die mit der TEXT-Funktion
geschrieben wurden. Zusätzlich zu den TEXT-Funktionseinträgen werden auch die
Session- und Pausenereignisse überwacht. Alle anderen Ereignisse, einschließlich
benutzerdefinierter Ereignisse, die durch Aufrufe von CMRDC geschrieben
werden, werden herausgefiltert.
* Monitor only TEXT function entries FILTER=EVENT/* Set event filter EVENT= /* No events STATEMENT=OFF /* No statements FNAT=OFF /* No FNAT
Das folgende Beispiel schreibt ein benutzerdefiniertes Ereignis mit dem Subtyp
J und dem Text Start profiling in das
Profiler-Ereignis-Trace.
FUNCTION=TEXT /* Write a user-defined event TEXT='Start profiling' /* User-defined event text TYPE='J' /* User-defined event subtype
Standardmäßig verwendet die Profiler-Monitor-Session die gleichen dynamischen
Natural-Parameter wie die Trace-Sitzung, die mit dem CMPRMIN-Eingabe-Dataset angegeben
wurde. Ausnahme: Der Profilparameter RDCSIZE (Puffergröße für den Natural Data
Collector) ist für die Monitor-Session auf Null (0) gesetzt. Mit dem
CMPRMIN-Schlüsselwort der Profiler Utility-Funktion INIT oder
COVERAGE kann ein separater dynamischer Parametereingabe-Dataset für die
Profiler-Monitor-Session definiert werden. Wenn Sie den separaten Eingabe-Dataset für
dynamische Parameter verwenden, beachten Sie Folgendes:
Geben Sie für die Monitor-Session nur die Natural-Parameter an, die erforderlich
sind. Geben Sie keine Parameter an, die für die Anwendungsausführung erforderlich sind
(z. B. RPC).
Geben Sie die Parameter RDCSIZE und RDCEXIT (User Exits für
den Natural Data Collector) nur für die Trace-Session an. Die Angabe dieser Parameter
für die Monitor-Session führt zu unnötigen Exit-Aufrufen und einer schlechteren
Performance.
Geben Sie den Parameter PDPSIZE (Profiler-Daten-Pool-Größe) nur für die
Monitor-Session an. Jede Spezifikation im Eingabe-Dataset für dynamische Parameter der
Trace-Session wird ignoriert.
Wenn die standardmäßige Einstellung des Natural-Profilparameters ETID (Adabas-Benutzerkennung)
verwendet wird, kann es vorkommen, dass der folgende Fehler von der
Profiler-Monitor-Session empfangen wird:
NAT3048 Error during Open processing. DB/Subcode
nn/8 - ETID=job-name..
(Fehler während der Open-Kommandoverarbeitung).
Verwenden Sie in diesem Fall die folgenden Parameter für CMPRMIN:
ETID=' ',DBCLOSE=ON
Alternativ können Sie einen ETID-Wert verwenden, der sich vom
Jobnamen im separaten dynamischen Parametereingabe-Dataset für die
Profiler-Monitor-Session unterscheidet.
Um einen dynamischen Parametereingabe-Dataset für die Profiler-Monitor-Session zu
definieren:
Geben Sie das folgende untergeordnete Schlüsselwort ein, das der Profiler
Utility-Funktion INIT oder COVERAGE zugeordnet ist:
CMPRMIN=data-set
Dabei ist data-set der Name des dynamischen
Parameter-Eingabe-Dataset für die Profiler-Monitor-Session.
//CMSYNIN DD * PROFILER FUNCTION=INIT /* Initialize profiling CMPRMIN=PRFPARMS /* Monitor session parameter ... /* //* Trace Session Parameters //CMPRMIN DD * RDCSIZE=2,RDCEXIT=NATRDC1,... /* //* Monitor Session Parameters //PRFPARMS DD * ETID=PROFILER,PDPSIZE=10000,... /*
Im Allgemeinen benötigt die Profiler-Monitor-Session keinen primären
Kommandoeingabe-Dataset. Mit dem CMSYNIN-Schlüsselwort der Profiler
Utility-Funktion INIT oder COVERAGE kann ein separater primärer
Kommandoeingabe-Dataset für die Profiler-Monitor-Session definiert werden. Dies ist
erforderlich, wenn Ihre Anwendung unter der Kontrolle von Natural Security läuft und Sie
keine automatische Anmeldung wünschen, d.h. der Natural-Profilparameter AUTO (Automatische Anmeldung)
ist auf OFF gesetzt. Geben Sie die gewünschten Anmeldeeinstellungen im
primären Kommandoeingabe-Dataset für die Profiler-Monitor-Session an, gefolgt vom
Profiler-Kommando, das die Profiler-Monitor-Session startet.
Geben Sie für das Profiling Folgendes an:
library-name,user-id,password PROFILER MONITOR
Geben Sie für die Codeabdeckung Folgendes an:
library-name,user-id,password PROFILER COVMON
Anmerkung
Wenn die obige Kommando-Syntax nicht angewendet wird, tritt der folgende Fehler auf:
Profiler Error-1 => PRBINIT : Profiler INIT function - No response from
monitor session after 0.3 seconds. (Profiler INIT-Funktion - Keine Antwort
von der Monitor-Session nach 0,3 Sekunden.)
Um einen primären Kommandoeingabe-Dataset für die Profiler-Monitor-Session zu
definieren:
Geben Sie das folgende untergeordnete Schlüsselwort ein, das der Profiler
Utility-Funktion INIT oder COVERAGE zugeordnet ist:
CMSYNIN=data-set
Dabei ist data-set der Name des primären
Kommandoeingabe-Parameter-Dataset für die Profiler-Monitor-Session.
//CMSYNIN DD * library-name,user-id,password PROFILER FUNCTION=INIT /* Initialize profiling CMSYNIN=PRFSYNIN /* Monitor session input data ... /* //* Monitor Session Input Data //PRFSYNIN DD * library-name,user-id,password PROFILER MONITOR /*
Die Profil-Erstellung oder die Messung der Codeabdeckung eines Batch-Natural RPC-Servers
erfordert, dass das Systemkommando PROFILER und die Profiler-Eingabedaten mit dem
Natural-Profilparameter STACK
im RPC-Server-Job eingegeben werden. Die Profiler-Eingabe muss im zweiten Syntaxformat
erfolgen (ohne Gleichheitszeichen und Kommas). Siehe auch Profiler Utility-Syntax
in Syntax und
Schlüsselwörter.
Anmerkung
Unter z/OS dürfen Sie die Language Environment-Option POSIX(ON) nicht
verwenden. Wenn Sie SSL für die Kommunikation mit dem EntireX Broker verwenden möchten,
müssen Sie Application Transparent Transport Layer Security (AT-TLS) verwenden.
Um die Profil-Erstellung eines Batch Natural RPC-Servers zu starten:
Geben Sie das folgende Schlüsselwort ein, bevor die Profiler-Funktion
INIT oder COVERAGE ausgeführt wird:
RPC
Das Schlüsselwort RPC zeigt dem Profiler an, dass ein Natural-RPC-Server
überwacht wird. Der Profiler überschreibt das Schlüsselwort WAIT-EMPTY der
Initialisierung mit dem Wert Null (0), so dass die Profil-Erstellung immer
fortgesetzt wird, wenn der Profiler-Daten-Pool leer ist und die Trace-Session noch aktiv
ist.
Es wird empfohlen, einen separaten dynamischen Parametereingabe-Dataset (Monitor-Session
CMPRMIN) für die Profiler-Monitor-Session zu verwenden, wenn Sie einen
Batch Natural RPC-Server profilieren. Geben Sie den RPC-Parameter
in diesem Dataset nicht an. Siehe Monitor-Session CMPRMIN.
Die Ereignisdaten des Batch Natural RPC-Servers werden in eine Profiler-Ressourcendatei geschrieben. Der Name und die Library der Ressourcendatei können mit Profiler-Schlüsselwörtern angegeben werden (siehe Profilierung initialisieren). Wir empfehlen Ihnen, den Natural RPC-Server zu stoppen, bevor der Profiler die Ressourcendatei weiterverarbeitet.
Wenn Sie ein Profil eines Natural-RPC-Servers erstellen, können Sie die Datensammlung mit den für die Profiler Utility bereitgestellten Programmen starten und anhalten.
Um die Profiler-Datensammlung in einer Client/Server-Umgebung zu starten und
anzuhalten:
Kopieren Sie das Programm PRFFCT aus der System-Library
SYSPRFLR in die Client-Library und die
Anwendungsprogrammierschnittstelle USR8210N aus der System-Library SYSEXT in
die Server-Library.
Führen Sie das Programm PRFFCT in der Client-Library aus.
PRFFCT erwartet als Eingabe den Wert START oder
PAUSE, um die entsprechende Funktion auszuführen. Wenn Sie den Wert
STATE eingeben, wird der aktuelle Status der Datensammlung
angezeigt.
Weitere Informationen siehe Datensammlung starten und anhalten.
Das folgende Beispiel für z/OS zeigt die Profiler-Eingabedaten für einen Batch Natural
RPC-Server, der mit dem Natural-Profilparameter STACK angegeben wurde:
STACK=( PROFILER RPC: TRACE:3: FUNCTION:INIT: TRACE-EVENT:OFF: TRACE-MON:3: CMPRMIN:CMPRMINX: RESOURCE:ON: RESOURCE-NAME:RPCTEST: RESOURCE-LIB:PRFDATA: REPLACE:YES: FILTER:EVENT: EVENT:ALL: STATEMENT:ON: FNAT:OFF: END-PROFILER; LOGON PRFDEMO )
Sie können die Profiler Utility im Batch-Modus benutzen, um ein Profil einer Mainframe-Anwendung zu erstellen oder die Codeabdeckung für eine Großrechner-Anwendung auszuführen, die remote von Natural Studio auf einem Natural Development Server ausgeführt wird.
Dazu müssen Sie das Systemkommando PROFILER und die
PROFILER-Eingabedaten mit dem dynamischen
Natural-Profilparameter STACK angeben, wenn Sie Ihre
Remote-Großrechner-Umgebung mappen. Die Profiler-Eingabe muss im zweiten Syntaxformat
eingegeben werden (ohne Gleichheitszeichen und Kommas). Siehe auch Profiler Utility-Syntax
in Syntax und
Schlüsselwörter.
Sie können das Profiler-Schlüsselwort INCLUDE verwenden, um die
Profiler-Eingabe aus einem Natural-Text-Objekt zu lesen und so die mit dem
STACK-Parameter eingegebene Datenmenge zu reduzieren. Ein
Beispiel finden Sie im Textobjekt XNDV, das in der System-Library
SYSPRFLR ausgeliefert wird. In diesem Beispiel wird die Profil-Erstellung
initialisiert und sofort die Überwachung gestartet.
Der Profiler überschreibt automatisch das Schlüsselwort WAIT-EMPTY der Initialisierung mit dem Wert Null
(0), so dass die Profil-Erstellung immer fortgesetzt wird, wenn der
Profiler-Daten-Pool leer ist und die Trace-Session noch aktiv ist.
Die Ereignisdaten der Natural Studio-Großrechner-Session werden in eine Profiler-Ressourcendatei geschrieben. Der Name und die Library der Ressourcendatei können mit Profiler-Schlüsselwörtern angegeben werden (siehe Profilierung initialisieren oder Initialisierung der Codeabdeckung (Code Coverage)). Wir empfehlen Ihnen, die Großrechner-Sitzung zu trennen, bevor Sie die Ressourcendatei auswerten.
Wenn Sie ein Profil einer Natural Studio-Großrechner-Sitzung erstellen, können Sie die Datensammlung mit den für die Profiler Utility mitgelieferten Programmen starten und anhalten (siehe entsprechenden Abschnitt).
Um die Profiler-Datenerfassung in einer Natural Studio-Großrechner-Sitzung zu starten
oder anzuhalten:
Melden Sie sich bei der Library SYSPRFLR an.
Führen Sie das Programm PRFSTART aus, um die Sammlung zu starten.
Führen Sie das Programm PRFPAUSE aus, um die Sammlung anzuhalten.
Die folgenden Regeln und Einschränkungen gelten für die Profil-Erstellung einer Großrechner-Session aus Natural Studio:
Die Profil-Erstellung mit der Profiler Utility im Batch-Modus funktioniert nicht, wenn Programme remote von NaturalONE ausgeführt werden. Verwenden Sie den NaturalONE Profiler, wenn Sie Großrechner-Programme profilieren möchten, die in einer NaturalONE-Umgebung ausgeführt werden.
Die Profil-Erstellung einer Natural Studio-Großrechner-Session mit der Profiler Utility im Batch-Modus funktioniert nicht, wenn der Natural Development Server einen CICS-Adapter verwendet.
Wenn die Profil-Erstellung mit dem STACK-Parameter gestartet wird, verwenden Sie
die Profiler-Einstellung TRACE=0.
Das Monitor-Tracing (TRACE-MONITOR) der Profiler-Session wird in die
Natural Development Server-Ausgabe geschrieben.
Das folgende Beispiel enthält eine STACK-Parameterangabe für eine
Profiler-Dateneingabe, die dynamisch beim Mappen auf eine Remote-Großrechner-Umgebung
von Natural Studio gesetzt wird:
STACK=(PROFILER RESOURCE-LIB:PRFDATA:INCLUDE:XNDV)
Die Ressource wird in die Library PRFDATA geschrieben.
Mit der Profiler Utility-Funktion CONSOLIDATE können Sie Ereignisdaten
konsolidieren.
Beachten Sie, dass die Natural Profiler Rich GUI-Schnittstelle ebenfalls eine Funktion zur Konsolidierung von Profiler-Ereignisdaten bietet.
Allgemeine Informationen zur Datenkonsolidierung finden Sie unter Datenkonsolidierung im Kapitel Grundlegendes Konzept der Profiler Utility.
Syntax von CONSOLIDATE:
FUNCTION=CONSOLIDATE |
[RESOURCE={ON|OFF}]
|
[RESOURCE-NAME=resource-name]
|
[RESOURCE-LIB=library-name]
|
[REPLACE={YES|NO}]
|
[TRANSACTION={ON|OFF}]
|
[IO-TIME={ON|OFF}]
|
[EXPORT={ON|OFF}]
|
[FORMAT={TEXT|COMMA|SEMICOLON}]
|
[TRACE-EVENT={ON|OFF}]
|
[TRACE-CONSOLIDATE={ON|OFF}]
|
Syntax-Beschreibung:
| Schlüsselwort für CONSOLIDATE | Wert | Beschreibung |
|---|---|---|
RESOURCE |
Gibt an, ob die konsolidierten Ereignisdaten in eine konsolidierte Natural Profiler-Ressourcendatei (NPRC) geschrieben werden. | |
ON |
Die konsolidierten Ereignisdaten werden in eine NPRC-Ressourcendatei geschrieben. | |
OFF |
Die konsolidierten Ereignisdaten werden nicht in eine
NPRC-Ressourcendatei geschrieben.
Diese Einstellung ist nützlich, wenn Sie das Ereignis-Trace oder die Statistikdaten drucken oder die Daten exportieren möchten und die konsolidierte NPRC-Ressourcendatei nicht benötigen. |
|
RESOURCE-NAME |
resource-name |
Der Name der Natural Profiler-Ressourcendatei (NPRF), die Sie
konsolidieren möchten.
Die Dateierweiterung Standardwert: Der Name der zuletzt erstellten NPRF-Ressourcendatei in der Library Bei |
RESOURCE-LIB |
library-name |
Der Name der Natural-Library, die die NPRF-Ressourcendatei
enthält, die Sie konsolidieren möchten.
Standardwert: Der Name der aktuellen Library. Diese Library wird auch als Ziel-Library für die konsolidierte NPRC-Ressourcendatei verwendet. |
REPLACE |
Gibt an, ob eine vorhandene NPRC-Ressourcendatei ersetzt wird. | |
YES |
Ersetzen einer vorhandene NPRC-Ressourcendatei mit demselben Namen. | |
NO |
Kein Ersetzen einer vorhandene NPRC-Ressourcendatei mit
demselben Namen.
Eine Nachricht wird zurückgegeben, wenn bereits eine Ressourcendatei mit demselben Namen vorhanden ist. In diesem Fall wird keine Konsolidierung durchgeführt. |
|
TRANSACTION |
Gibt an, ob Transaktionskennungen zu den konsolidierten Ereignisdaten hinzugefügt werden. | |
ON |
Transaktionskennungen werden zu den konsolidierten
Ereignisdaten hinzugefügt. Weitere Informationen siehe Transaktionszusammenfassung.
Anmerkung |
|
OFF |
Transaktionskennungen werden den konsolidierten Ereignisdaten nicht hinzugefügt. | |
IO-TIME |
Gibt an, ob die E/A-Zeit (IB-Ereignis) und die
Natural-RPC-Client-Zeit (RW-Ereignis) in den konsolidierten Daten
enthalten sind.
|
|
ON |
E/A- und Natural-RPC-Client-Zeit sind in den konsolidierten Daten enthalten. | |
OFF |
E/A- und Natural-RPC-Client-Zeit sind nicht in den
konsolidierten Daten enthalten.
Diese Einstellung ist nützlich, wenn die
Ereignisdaten aus der Profiler Utility im Online-Modus stammen und Sie planen,
die Performance in NaturalONE oder mit der Profiler
Utility- Für eine Performance-Analyse mit der Natural Profiler Rich GUI-Schnittstelle ist diese Einstellung nicht erforderlich, da diese eine ähnliche Funktion bietet. |
|
EXPORT |
Gibt an, ob die konsolidierten Ereignisdaten in die Arbeitsdatei (Work File) 7 geschrieben werden. | |
ON |
In die Arbeitsdatei 7 schreiben. | |
OFF |
Nicht in die Arbeitsdatei 7 schreiben. | |
FORMAT |
Gibt das Format an, in dem die exportierten Daten in Arbeitsdatei 7 geschrieben werden. | |
TEXT |
Daten im Freitextformat schreiben. | |
COMMA |
Daten im CSV-Format mit einem Komma (,) als
Trennzeichen schreiben.
|
|
SEMICOLON |
Daten im CSV-Format mit einem Semikolon (;) als Trennzeichen schreiben. | |
TRACE-EVENT |
Gibt an, ob das Profiler-Ereignis-Trace in die Standardausgabe
geschrieben wird.
Siehe Ereignis-Trace. |
|
ON |
Profiler-Ereignis-Trace schreiben. | |
OFF |
Profiler-Ereignis-Trace nicht schreiben. | |
TRACE-CONSOLIDATE |
Gibt an, ob der Profiler-Konsolidierungs-Trace in die Standardausgabe geschrieben wird. Siehe Konsolidierungs-Trace. | |
ON |
Profiler-Konsolidierungs-Trace schreiben. | |
OFF |
Profiler-Konsolidierungs-Trace nicht schreiben. |
Im folgenden Beispiel wird die Profiler-Ressource Test.nprf in der Library
PRFDATA konsolidiert und die konsolidierten Daten werden in die
Profiler-Ressource Test.nprc geschrieben. E/A- und Natural-RPC-Client-Zeit sind in den
konsolidierten Daten enthalten.
Darüber hinaus werden die konsolidierten Daten im CSV-Format (semikolongetrennte Werte) in Arbeitsdatei 7 geschrieben.
Die Ereignis- und Konsolidierungs-Traces sind ausgeschaltet.
FUNCTION=CONSOLIDATE /* Consolidate Profiler data RESOURCE=ON /* Write to resource RESOURCE-NAME='Test' /* Resource name RESOURCE-LIB=PRFDATA /* Resource library REPLACE=YES /* Replace resource TRANSACTION=OFF /* Do not add transaction identifiers IO-TIME=ON /* Include I/O and RPC client times EXPORT=ON /* Write to Work File 7 FORMAT=S /* CSV format with semicolon separator TRACE-EVENT=OFF /* No event trace TRACE-CONSOLIDATE=OFF /* No consolidation trace
Wenn das Profil einer Natural-Anwendung erstellt wird, schreibt die Natural Profiler
Utility die Ereignisdaten in eine NPRF-Ressourcendatei. Konsolidierte Daten werden in
einer NPRC-Ressourcendatei und Abdeckungsdaten in einer NCVF-Ressourcendatei gespeichert.
Die READ-Funktion der Profiler Utility liest und wertet die
Profiler-Ressourcendaten aus und schreibt die Ergebnisse in die Standardausgabe oder in
eine Natural-Arbeitsdatei. Die durchgeführten Auswertungen hängen, wie in der folgenden
Tabelle beschrieben, vom Typ der gelesenen Ressourcendatei ab:
| Typ der Ressourcendatei | Auswertung | Beschreibung |
|---|---|---|
| NPRF | Ereignis-Trace | Chronologische Liste der Profiler-Ereignisdaten. |
| Programm-Trace | Programmablauf der profilierten Anwendung. | |
| Statistik | Statistik der Profil-Erstellung und der NPRF-Ressourcendatei. | |
| NPRC | Konsolidierungs-Trace | Liste der konsolidierten Daten mit Trefferzahlen und zusammengefasster verstrichener (elapsed) Zeit und CPU-Zeit. |
| Programmzusammenfassung | Tabelle der ausgeführten Natural-Objekte.
Die Tabelle zeigt, welche Ereignisse während der Objektausführung aufgetreten sind und welche CPU-Zeit für die Ausführung des Objekts aufgewendet wurde. |
|
| Zeilenzusammenfassung | Tabelle der ausgeführten Natural-Quellcode-Zeilen.
Die Tabelle zeigt, wie viele Ereignisse während der Zeilenausführung aufgetreten sind und wie viel CPU- und verstrichene (elapsed) Zeit bei der Ausführung der Zeile aufgewendet wurde. |
|
| Transaktionszusammenfassung | Tabelle der ausgeführten Transaktionen.
Die Tabelle zeigt, wie viele Ereignisse während der Transaktionsausführung aufgetreten sind und die Antwortzeit (verstrichene (elapsed) Zeit) der Transaktionen. |
|
| Statistik | Statistikdaten des Profiling, der Konsolidierung und der NPRC-Ressourcendatei. | |
| NCVF | Statement-Abdeckung | Liste der in den Quellcode-Zeilen abgedeckten Statements.
Die Liste zeigt den Prozentsatz der Statement-Abdeckung für jede Statement-Zeile in dem Quellcode der aufgerufenen Programme. |
| Programmabdeckung | Tabelle der Codeabdeckungsergebnisse ausgeführter
Natural-Objekte.
Die Programmabdeckungstabelle listet alle Natural-Objekte auf, die während des Abdeckungslaufs ausgeführt wurden. Für jedes Objekt zeigt es den Prozentsatz der Abdeckung, die Anzahl der abgedeckten und nicht abgedeckten ("missed") Statements und die Gesamtzahl der Statements. |
|
| Statistik | Statistikdaten für Profil-Erstellung, Abdeckung und die NCVF-Ressourcendatei. |
Dieser Abschnitt behandelt die folgenden Themen:
Die READ-Funktion der Profiler Utility liest und wertet die
Ressourcendaten aus.
Syntax von READ:
FUNCTION=READ |
[RESOURCE-NAME=resource-name]
|
[RESOURCE-LIB=library-name]
|
[RESOURCE-TYPE={NPRF|NPRC|NCVF}]
|
[EVENT={ON|OFF}]
|
[PROGRAM={ON|OFF}]
|
[LINE={ON|OFF}]
|
[TRANSACTION={ON|OFF}]
|
[STATISTICS={ON|OFF}]
|
[PRINT={ON|OFF}]
|
[EXPORT={ON|OFF}]
|
[FORMAT={TEXT|COMMA|SEMICOLON}]
|
Syntax-Beschreibung:
| Schlüsselwort für READ | Wert | Beschreibung |
|---|---|---|
RESOURCE-NAME |
resource-name |
Der Name der NPRF-, NPRC- oder NCVF-Ressourcendatei, die Sie
lesen möchten.
Wenn keine Dateierweiterung angegeben ist, wird die mit dem
Schlüsselwort Standardwert: Der Name der zuletzt erstellten NPRF-, NPRC- oder
NCVF-Ressourcendatei in der Library, abhängig von der
|
RESOURCE-LIB |
library-name |
Der Name der Natural-Library, die die NPRF-, NPRC- oder
NCVF-Ressource enthält, die Sie lesen möchten.
Standardwert: Der Name der aktuellen Library. |
RESOURCE-TYPE |
Gibt den Standard-Ressourcentyp (Dateierweiterung) an, der
verwendet werden soll, wenn keine Erweiterung mit RESOURCE-NAME
angegeben ist.
|
|
NPRF |
Der Standard-Ressourcentyp ist NPRF mit der Erweiterung
.nprf.
|
|
NPRC |
Der Standard-Ressourcentyp ist NPRC mit der Erweiterung
.nprc.
|
|
NCVF |
Der Standard-Ressourcentyp ist NCVF mit der Erweiterung
.ncvf.
|
|
EVENT |
Gibt an, ob der Natural Profiler Ereignisse auswertet.
Siehe auch Ereignis-Trace, Konsolidierungs-Trace und Statement-Abdeckung. |
|
ON |
NPRF: Das Natural Profiler-Ereignis-Trace schreiben. |
|
OFF |
Ereignisse nicht auswerten. | |
PROGRAM |
Gibt an, ob der Natural Profiler Programme auswertet.
Siehe auch Programm-Trace, Programmzusammenfassung und Programmabdeckung. |
|
ON |
NPRF: Das Natural Profiler-Programm-Trace schreiben. |
|
OFF |
Programme nicht auswerten. | |
LINE |
Diese Option ist nur für NPRC-Ressourcen verfügbar.
Gibt an, ob der Natural Profiler ausgeführte Quellcodezeilen auswertet. Siehe auch Zeilenzusammenfassung. |
|
ON |
Die Natural Profiler-Zeilenzusammenfassung schreiben. | |
OFF |
Keine ausgeführten Quellcodezeilen auswerten. | |
TRANSACTION |
Diese Option ist nur für NPRC-Ressourcen verfügbar.
Gibt an, ob der Natural-Profiler Transaktionen auswertet. Weitere Informationen siehe Transaktionszusammenfassung. |
|
ON |
Transaktionen auswerten, um eine Transaktionszusammenfassung zu generieren und transaktionsbezogene Werte in der Programmzusammenfassung und der Zeilenzusammenfassung anzuzeigen. | |
OFF |
Keine Transaktionen auswerten. | |
STATISTICS |
Gibt an, ob der Natural Profiler Statistiken schreibt.
Siehe auch Profiler-Statistikdaten. Anmerkung |
|
ON |
Statistiken schreiben. | |
OFF |
Keine Statistiken schreiben. | |
PRINT |
Gibt an, ob das Ergebnis in die Standardausgabe geschrieben wird. | |
ON |
In die Standardausgabe schreiben. | |
OFF |
Nicht in die Standardausgabe schreiben. | |
EXPORT |
Gibt an, ob die ausgewerteten Daten in die Arbeitsdatei 7 geschrieben werden. | |
ON |
In die Arbeitsdatei 7 schreiben. | |
OFF |
Nicht in die Arbeitsdatei 7 schreiben. | |
FORMAT |
Gibt das Format an, in dem die exportierten Daten in Arbeitsdatei 7 geschrieben werden. | |
TEXT |
Die Daten im Freitextformat schreiben. | |
COMMA |
Die Daten im CSV-Format mit einem Komma (,) als
Trennzeichen schreiben.
|
|
SEMICOLON |
Die Daten im CSV-Format mit einem Semikolon (;)
als Trennzeichen schreiben.
|
Das folgende Beispiel liest die Natural Profiler-Ressource Test.nprf in
der Library PRFDATA und schreibt das Ereignis-Trace, das Programm-Trace und
die Profiler-Statistiken in die Standardausgabe und in die Arbeitsdatei 7 im
Textformat.
FUNCTION=READ /* Read Profiler Data RESOURCE-NAME='Test' /* Resource name RESOURCE-LIB=PRFDATA /* Resource library RESOURCE-TYPE=NPRF /* Use resource type NPRF EVENT=ON /* Print event trace PROGRAM=ON /* Print program trace STATISTICS=ON /* Print statistics PRINT=ON /* Write to standard output EXPORT=ON /* Write to Work File 7 FORMAT=TEXT /* Export in text format
Wenn EVENT=ON für eine NPRF-Ressourcendatei angegeben wird, wird das
Profiler-Ereignis-Trace generiert.
Das Ereignis-Trace zeigt die Daten jedes Natural-Ereignisses, das während der Ausführung der Anwendung aufgetreten ist. Das Trace kann referenziert werden, wenn detaillierte Informationen zu einem Ereignis erforderlich sind. Wenn beispielsweise während der Anwendungsausführung ein Natural-Fehler aufgetreten ist, zeigt das Ereignis-Trace die entsprechende Fehlernummer und Meldung an.
Wenn das Ereignis-Trace in die Standardausgabe (PRINT=ON) geschrieben oder
im Textformat exportiert wird (EXPORT=ON, FORMAT=TEXT), ähnelt
sie dem Ereignis-Trace, das von der Profiler-Monitor-Session geschrieben wurde, während
die Anwendung profiliert wurde (siehe Ereignis-Trace). Wenn die Daten im CSV-Format
(kommagetrennte Werte) exportiert werden, enthalten sie alle vom Profiler
bereitgestellten Datenfelder (siehe Gesammelte Daten).
- Beispiel für ein Ereignis-Trace
Das folgende Beispiel zeigt einen Auszug aus einem Ereignis-Trace:
Natural Profiler Event Trace ---------------------------- Count Time CPU-Time (ms) Ev Lev Library Program Line CC-Lib CC-Name Statement Local-Data 0 10:20:58.219911 63.318 MP 003 SYSPRFD PRBINIT 8350 Call Monitor pause requested 102 10:20:58.277586 76.106 PL 000 0000 Execute SYSEDMD/MENU 103 10:20:58.277591 76.139 PS 001 SYSEDMD MENU 0000 PgmStart 00010/02430 Type: P 103 10:20:58.277594 76.151 NS 001 SYSEDMD MENU 0250 Compute Assign/Compute/Move 103 10:20:58.277596 76.155 NS 001 SYSEDMD MENU 0270 Fetch Fetch 104 10:20:58.277598 76.169 DB 001 SYSEDMD MENU 0270 Fetch 00010/02430 S1 ...Erläuterungen:
Die Spalte Count zeigt die Nummer des Ereignisses an. Monitor Pause (
MP)-Ereignisse und Natural Statement (NS)-Ereignisse werden nicht gezählt und erhalten die Nummer des vorherigen Ereignisses.Die Spalten Time und CPU-Time zeigen die Ereigniszeit bzw. den CPU-Zeitstempel der Ereignisausführung an.
Das Ereignis mit der Nummer
104ist ein Database Before (DB)-Ereignis, das durch ein Adabas S1-Kommando verursacht wird, das für die Datei00010/02430ausgegeben wurde und durch einFETCH-Statement in der Zeile0270des Natural-ObjektsMENUausgelöst wurde.Weitere Erläuterungen zu den Trace-Spalten und Ereignistypen finden Sie in den Abschnitten Event-Trace und Gesammelte Ereignisse und Daten.
Wenn EVENT=ON für eine NPRC-Ressourcendatei angegeben wird, wird das
Natural Profiler-Konsolidierungs-Trace generiert. Das Konsolidierungs-Trace wird auch
generiert, wenn CONSOLIDATE=ON und TRACE-CONSOLIDATE=ON für
die INIT-Funktion der Profiler Utility gesetzt sind oder wenn
TRACE-CONSOLIDATE=ON für die Profiler Utility-Funktion
CONSOLIDATE gesetzt ist.
Das Konsolidierungs-Trace zeigt allgemeine Ereignisdaten, zusammengefasste Werte der verstrichenen (elapsed) Zeit und CPU-Zeit sowie die Trefferanzahl des konsolidierten Datensatzes. Wenn zwei Trace-Einträge die gleichen allgemeinen Ereignisdaten zeigen, haben sie unterschiedliche ereignisspezifische Daten, die nicht im Konsolidierungs-Trage angezeigt werden.
Die konsolidierten Datensätze dienen als Grundlage für weitere Auswertungen wie die NaturalONE-Hot Spots oder die Datenauswertung und Programmanalyse der Profiler Rich GUI-Schnittstelle. Das Konsolidierungs-Trace kann verwendet werden, um die konsolidierten Daten zu validieren.
Wenn das Konsolidierungs-Trace in die Standardausgabe (PRINT=ON)
geschrieben wird, ähnelt es dem Konsolidierungs-Trace, das von der
Profiler-Datenkonsolidierung geschrieben wurde (siehe Ereignisdaten
konsolidieren). Wenn die Daten exportiert werden, enthalten sie
alle vom Profiler bereitgestellten konsolidierten Datenfelder.
- Beispiel für ein Konsolidierungs-Trace:
Das folgende Beispiel zeigt einen Auszug aus einem Konsolidierungs-Trace:
Natural Profiler Consolidation Trace ------------------------------------ Count Transact Ev User Lev Library Program Line CC-Lib CC-Name Statement Hit-Count Elapsed(ms) CPU(ms) 1 DA PRFO82D 000 0000 1 75.692 0.870 2 DA PRFO82D 000 0000 1 0.002 0.004 3 DA PRFO82D 000 0000 1 0.006 0.025 4 NS PRFO82D 006 SYSLIBS A82CLS 0010 SYSAOSSU C-COPYRT Reset 43 0.043 0.118 5 NS PRFO82D 006 SYSTEM NOMSTCS 4360 End 1 0.000 0.003 6 PL PRFO82D 006 SYSTEM NOMSTCS 0970 Callnat 1 0.008 0.058 7 PL PRFO82D 006 SYSTEM NOMSTCS 1020 Perform 1 0.004 0.017 ...Erläuterungen:
Die Spalte Count zeigt die Nummer des konsolidierten Datensatzes.
Die Spalte Transact zeigt die Transaktionskennung.
Die Transaktionskennung beginnt mit
1und wird mit jedemIA- (nach Terminal-E/A) oderRI-Ereignis (eingehende RPC-Nachricht) erhöht. Transaktionskennungen sind nur verfügbar, wenn die Daten mit der OptionTRANSACTION=ONkonsolidiert werden.Der konsolidierte Datensatz
4zeigt, dass dieRESET-Anweisung in der Zeile0010des CopycodeC-COPYRT(im Natural-ObjektA82CLSenthalten) 43 Mal ausgeführt wurde und eine verstrichene (elapsed) Gesamtzeit von0,043Millisekunden (ms) und eine Gesamt-CPU-Zeit von0,118ms verbrauchte.Die Anwendung lief auf einer z/OS-Maschine mit zIIP (IBM System z Integrated Information Processor). Unter dieser Bedingung kann die CPU-Zeit höher sein als die verstrichene (elapsed) Zeit.
Weitere Erläuterungen zu den Trace-Spalten und Ereignistypen finden Sie in den Abschnitten Event-Trace und Gesammelte Ereignisse und Daten.
Wenn PROGRAM=ON für eine NPRF-Ressourcendatei angegeben wird, wird das
Profiler-Programm-Trace erstellt. Das Programm-Trace zeigt den Programmfluss der
profilierten Anwendung. Im Allgemeinen zeigt der Programmablauf ausschließlich Programm-
und Session-Ereignisse an (eine Liste möglicher Ereignistypen finden Sie unter Gesammelte Ereignisse und
Daten).
Wenn der Programmablauf in die Standardausgabe (PRINT=ON) geschrieben oder
im Textformat exportiert wird (EXPORT=ON, FORMAT=TEXT), werden
die Programmnamen entsprechend der Programmebene eingerückt (siehe Beispiel unten), um
einen schnellen Überblick über die Anwendungsaufrufstruktur zu erhalten.
Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, werden die Programmnamen nicht eingerückt. Zusätzlich zur Ausgabe im Textformat enthalten die exportierten Daten den CPU-Zeitstempel und die zusammengefasste Adabas-Zeit.
- Beispiel für einen Programm-Trace
Das folgende Beispiel zeigt einen Auszug eines Programm-Trace und die Summen der Anwendungsausführung:
Natural Profiler Program Trace ------------------------------ Time Ev Library CC-Name Line Lev Program Events 10:20:58.309812 PL 0000 000 10:20:58.309817 PS SYSEDMD 0000 001 .OPTTEST D=4 N=2 10:20:58.357694 PL SYSEDMD 5620 001 .OPTTEST 10:20:58.357704 PS SYSEDMD 0000 002 ..CALLMON3 N=3 10:20:58.385263 PL SYSEDMD 0980 002 ..CALLMON3 10:20:58.385274 PS SYSEDMD 0000 003 ...OP3DISC D=3 N=4 10:20:58.412207 PL SYSEDMD 1670 003 ...OP3DISC 10:20:58.412221 PS SYSEDMD 0000 004 ....OPTINFO N=57 10:20:58.443203 PL SYSEDMD 5830 004 ....OPTINFO 10:20:58.443210 PS SYSEDMD 0000 005 ....:OPTPARM1 D=3 N=19 10:20:58.449549 PL SYSEDMD 1960 005 ....:OPTPARM1 10:20:58.449555 PS SYSEDMD 0000 006 ....:.OPTPARM2 D=3 N=10 10:20:58.458286 PL SYSEDMD 0560 006 ....:.OPTPARM2 10:20:58.458300 PS SYSEDMD 0000 007 ....:..OPTPARM3 N=16 10:20:58.458390 PL SYSEDMD 1530 007 ....:..OPTPARM3 10:20:58.458408 PS SYSLIBS 0000 008 ....:...NAT41004 D=10 C=6 N=7345 10:20:58.471017 PT SYSLIBS 5235 008 ....:...NAT41004 10:20:58.471017 PR SYSEDMD 1530 007 ....:..OPTPARM3 N=2898 10:20:58.473293 PL SYSEDMD 1530 007 ....:..OPTPARM3 10:20:58.473297 PS SYSLIBS 0000 008 ....:...NAT41004 D=5 C=6 N=1416 10:20:58.475581 PT SYSLIBS 5235 008 ....:...NAT41004 10:20:58.475581 PR SYSEDMD 1530 007 ....:..OPTPARM3 N=466 10:20:58.475957 PT SYSEDMD 2190 007 ....:..OPTPARM3 10:20:58.475957 PR SYSEDMD 0560 006 ....:.OPTPARM2 N=283 10:20:58.476187 PT SYSEDMD 0860 006 ....:.OPTPARM2 10:20:58.476187 PR SYSEDMD 1960 005 ....:OPTPARM1 N=42 10:20:58.476222 PT SYSEDMD 7510 005 ....:OPTPARM1 10:20:58.476222 PR SYSEDMD 5830 004 ....OPTINFO D=3 N=10 10:20:58.497926 PL SYSEDMD 6080 004 ....OPTINFO 10:20:58.521954 PR SYSEDMD 1670 003 ...OP3DISC N=241 10:21:11.205102 PR SYSEDMD 0980 002 ..CALLMON3 D=7 N=6070 10:21:41.704996 PR SYSEDMD 5620 001 .OPTTEST D=8 I=3 N=26 10:21:41.731229 PT SYSEDMD 7370 001 .OPTTEST 10:21:41.731229 PR 0000 000 D=14 I=1 10:21:42.248348 ST 0000 000 Totals ------ Ev Event Count S Session ................ 1 P Program ................ 5297 D Database Call .......... 2140 I Terminal I/O ........... 12 C External Program Call .. 6510 E Runtime Error .......... 43 N Natural Statement ...... 857384 R RPC Request............. 0 U User-Defined Event ..... 0 M Monitor Pause .......... 2Erläuterungen:
Für jedes aufgeführte Ereignis wird der Zeitpunkt des Ereignisses, die aktive Library, das Programm (Natural-Objekt), der Copycode, die Zeilennummer und die Programmebene angezeigt.
Dem Programmnamen folgt die Anzahl der Ereignisse, die von einem Programmereignis bis zum nächsten Programmereignis aufgetreten sind.
Ereignisse, die zu einer Ereignisgruppe gehören, werden unter Verwendung der maximalen Anzahl der entsprechenden Ereignistypen zu einer Anzahl zusammengefasst. Beispiel: Ein Database Before-(
DB)- und ein Database After-(DA)-Ereignis werden zu einem Datenbankereignis (D=1) zusammengefasst.Im obigen Beispiel wurde das Natural-Objekt
OPTTESTauf Ebene1gestartet. Dieses Programm ruft das SubprogrammCALLMON3auf, das weitere Subprogramme aufruft. Die höchste Stufe 8 wird erreicht, wenn das SubprogrammNAT41004ausgeführt wird. Während der ersten Ausführung führt dieses Subprogramm 10 Datenbankaufrufe (D=10), 6 externe Programmaufrufe (C=6) und 7345 Natural-Statements (N=7345) durch.Der Abschnitt
Totals(Summen) am Ende des Programm-Trace zeigt die maximale Anzahl jeder Ereignisgruppe. Zum Beispiel: Die Summe von 2140 Datenbankaufrufe entspricht 2140 Database Before-(DB)- und 2140 Database After-(DA)-Ereignissen.Die Summen der Ereignisgruppen Session (
S) und Program (P) sind nur unterTotals(Summen) aufgeführt; sie sind nicht neben dem Programmnamen aufgeführt.Weitere Erläuterungen zu den Trace-Spalten finden Sie im Abschnitt Ereignis-Trace.
Erläuterungen zu Ereignistypen und zugehörigen Ereignisgruppen finden Sie im Ereignisse.
Wenn PROGRAM=ON für eine NPRC-Ressourcendatei angegeben ist, wird die
Profiler-Programmzusammenfassung generiert.
Die Programmzusammenfassung zeigt für jedes Natural-Objekt, wie viele Natural-Ereignisse aufgetreten sind, die gesamte CPU-Zeit (in Millisekunden) und den Prozentsatz der CPU-Zeit, die das Natural-Objekt bezogen auf die gesamte CPU-Zeit aufgewendet hat.
Monitor-Pause-Ereignisse und Ereignisse auf Ebene 0 werden nicht für die Programmzusammenfassung berücksichtigt. Ereignisse, die zu einer Ereignisgruppe gehören, werden zu einer Zählung zusammengefasst: siehe Ereignisse.
Programmstarts und Ladeanforderungen werden separat aufgeführt.
Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, wird die Anzahl jedes Ereignistyps aufgelistet. Darüber hinaus werden die verstrichene (elapsed) Zeit und die Adabas-Zeiten (absolute und prozentuale Werte) angezeigt. Die exportierten Zeitwerte werden in Mikrosekunden angezeigt.
- Beispiel für eine Programmzusammenfassung
Das folgende Beispiel zeigt den Auszug einer Programmzusammenfassung:
Natural Profiler Program Summary -------------------------------- Library Program Start Load Database I/O External Error Statement User CPU-Time (ms) CPU % SYSEDMD ADA-CL 41 0 40 0 41 0 621 0 3.785 0.14 SYSEDMD ADA-RC 45 0 44 0 45 0 545 0 4.704 0.17 SYSEDMD AOS-CL 115 97 15 0 0 0 2507 0 42.890 1.63 SYSEDMD AOS-OP 169 154 22 0 0 0 6975 0 70.286 2.68 SYSEDMD BYTE 1 0 0 0 0 0 11 0 0.034 0.00 SYSEDMD CALLMON3 1 5 23 0 0 0 7089 0 20.001 0.76 SYSEDMD CALLNOM 6 6 19 0 0 0 18 0 1.342 0.05 SYSEDMD CALLNOPM 2 2 4 0 0 0 16 0 0.395 0.01 SYSEDMD CALLNOPN 1 1 4 0 0 0 8 0 0.244 0.00 SYSEDMD CALLNOPS 3 4 23 0 0 1 31 0 1.841 0.07 SYSEDMD DISNOP 1 7 6 0 0 0 515 0 2.260 0.08 SYSEDMD DISNO4I 1 47 3 0 1 0 8075 0 25.516 0.97 SYSEDMD DISNO4IS 57 0 0 0 624 0 36877 0 105.650 4.03 SYSEDMD DISNRS 1 0 0 0 44 0 511 0 3.343 0.12 SYSEDMD DISNSP 1 18 15 0 0 0 1850 0 6.074 0.23 SYSEDMD DISNTMZ 1 4 11 0 0 0 324 0 2.309 0.08 SYSEDMD MENU 1 1 3 0 0 0 2 0 0.235 0.00 SYSEDMD MONACSH 1 6 6 0 0 0 1217 0 3.470 0.13 SYSEDMD MONADA 1 3176 71 0 0 0 272180 0 680.214 25.98 SYSEDMD MONAREP 1 9 28 0 0 0 1964 0 6.378 0.24 ... Total 5294 5293 2122 7 6510 43 857384 0 2617.326 100.00Erläuterungen:
Das Natural-Objekt
MONADAverbrauchte die meiste CPU-Zeit: 680,214 ms, was 25,98 Prozent der gesamten CPU-Zeit entspricht.
MONADAwurde einmal gestartet, es lud3176andere Natural-Objekte, führte71Datenbankaufrufe und272180Natural-Statements durch. Es gab keine Eingabe/Ausgabe, keinen externen Aufruf und keinen Fehler im Programm.Am Ende der Programmzusammenfassung werden die Gesamtzahlen der Profil-Erstellung aufgelistet.
Wenn LINE=ON für eine NPRC-Ressourcendatei angegeben wird, wird die
Profiler-Zeilenzusammenfassung generiert.
Die Zeilenzusammenfassung zeigt für jede Quellcodezeile in einem Natural-Objekt die Anzahl der aufgetretenen Natural-Ereignisse (Hit-Count/Trefferzahl), die CPU- und die verstrichene (elapsed) Zeit (in Millisekunden und Prozent), die für die Zeile aufgewendet wurde. Der Prozentsatz der Zeiten wird im Verhältnis zu den Gesamtzeiten der Anwendung berechnet.
Die Zeilenzusammenfassung zählt keine Monitor-Pause-Ereignisse und Ereignisse auf Ebene 0.
Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, wird die Anzahl jedes Ereignistyps aufgelistet. Zusätzlich werden die Adabas-Zeiten (absolute und prozentuale Werte) angezeigt. Die exportierten Zeitwerte werden in Mikrosekunden angezeigt.
- Beispiel für eine Zeilenzusammenfassung
Das folgende Beispiel zeigt den Auszug einer Zeilenzusammenfassung:
Natural Profiler Line Summary -------------------------------- Library Program Line CC-Lib CC-Name Hit-Count CPU (ms) CPU % Elapsed (ms) Ela % PRFTEST XINT 0000 1 0.016 0.46 0.003 0.01 PRFTEST XINT 0140 1 0.005 0.14 0.001 0.00 PRFTEST XINT 0150 1 0.006 0.17 0.002 0.01 PRFTEST XINT 0160 1 0.004 0.11 0.001 0.00 PRFTEST XINT 0170 23 0.128 3.75 0.029 0.18 PRFTEST XINT 0180 10 0.049 1.43 0.012 0.07 PRFTEST XINT 0190 10 0.054 1.58 0.010 0.06 ... Total 371 3.408 100.00 15.992 100.00Erläuterungen:
Die Zeile
0170im Natural-ObjektXINTverbrauchte0,128ms der CPU-Zeit und0,029ms der verstrichenen (elapsed) Zeit. Dies entspricht3,75Prozent der gesamten CPU-Zeit und0,18Prozent der gesamten verstrichenen (elapsed) Zeit.23Ereignisse (Hit-Count/Trefferzahl) wurden in der Zeile ausgeführt.Am Ende der Zeilenzusammenfassung werden die Gesamtzahlen der Profil-Erstellung aufgelistet.
Eine Transaktion ist der Code, der zwischen zwei aufeinanderfolgenden Terminal-Ein-/Ausgabe-Vorgängen ausgeführt wird. Die verstrichene (elapsed) Zeit, die für die Ausführung einer Transaktion aufgewendet wurde, wird als Antwortzeit (Response Time) bezeichnet.
Die vom Profiler generierte Transaktionszusammenfassung zeigt, wie viele Natural-Ereignisse bei jeder Transaktion aufgetreten sind, die Antwortzeit (in Millisekunden) und den Prozentsatz der Antwortzeit, die die Transaktion bezogen auf die gesamte Antwortzeit aufgewendet hat.
- Erforderliche Voraussetzungen für Transaktionsbewertungen
Die Profiler-Daten müssen mit der
CONSOLIDATE-Funktion aufTRANSACTION=ONkonsolidiert werden, damit die konsolidierten Datensätze in der NPRC-Ressourcendatei Transaktionsbezeichner enthalten, die für die Auswertung der Transaktionsantwortzeit erforderlich sind.
TRANSACTION=ONwird für die READ-Funktion angegeben.- Für Transaktionen ausgewertete Ereignisdaten
Im Allgemeinen bezieht sich ein Terminal-Ein-/Ausgabe-Ereignis auf eine Transaktion. Die Anzahl der Terminal-Ein-/Ausgabe-Ereignisse ist nicht in der Standardausgabe aufgeführt (für
PRINT=ON).Daten, die im CSV-Format (kommagetrennte Werte) exportiert werden, enthalten die Anzahl jedes Ereignistyps, einschließlich Terminal-Eingabe/Ausgabe. Darüber hinaus enthält die Datenliste die CPU-Zeit und die Adabas-Zeiten (absolute und Prozentwerte). Exportierte Zeitwerte werden in Mikrosekunden angezeigt.
Die Transaktionszusammenfassung berücksichtigt keine Before Terminal E/A (
IB)-Ereignisse, RPC Wait for Client-Ereignisse (RW), Monitor Pause (MP)-Ereignisse und Ereignisse auf Ebene 0. Ereignisse, die zu einer Ereignisgruppe gehören, werden zu einer Zählung zusammengefasst.Erläuterungen zu Ereignistypen und zugehörigen Ereignisgruppen finden Sie im Abschnitt Ereignisse.
- Geänderte Zeilen- und Programmzusammenfassung
Wenn
TRANSACTION=ONfür dieREAD-Funktion einer NPRC-Ressourcendatei angegeben wird, berücksichtigen die Programmzusammenfassung und die Zeilenzusammenfassung auch den Transaktionsbezeichner (Identifier) und aggregieren die Programm- und Positionswerte für jede Transaktion separat. In der Transaktionszeilenzusammenfassung gibt die SpalteIDdie Programmzeile an, in der die Transaktion gestartet wurde.- Beispiel für eine Transaktionszusammenfassung
Das folgende Beispiel zeigt eine Transaktionszusammenfassung:
Natural Profiler Transaction Summary ------------------------------------ Transact TA-Lib TA-Prog TA-CC TA-Line Program Database External Error Statement User Elapsed (ms) Time% 1 1 0 1 0 0 0 0.829 0.50 2 SYSPRFLR PRFMENM 0020 9 13 8 0 0 0 17.618 10.65 3 SYSEDM MOPTTEST 0020 4 0 0 0 0 0 6.167 3.72 4 SYSEDM OPTWLS80 0470 0 0 0 0 0 0 1.108 0.66 5 SYSEDM OPTWLS80 0470 2 0 0 0 0 0 1.133 0.68 6 SYSEDM OPTTEST 1750 1 0 0 0 0 0 1.180 0.71 7 SYSEDM MOPTTEST 0020 27 33 30 0 0 0 94.236 56.96 8 SYSEDM OPTTEST 5590 1 0 0 0 0 0 1.185 0.71 9 SYSEDM MOPTTEST 0020 37 33 56 0 0 0 37.311 22.55 10 SYSEDM OPTTEST 5760 1 0 0 0 0 0 1.096 0.66 11 SYSEDM MOPTTEST 0020 6 0 6 0 0 0 2.164 1.30 12 SYSPRFLR PRFMENM 0020 2 0 3 0 0 0 1.394 0.84 Total 86 79 103 0 0 0 165.421 100.00Erläuterungen am Beispiel von Transaktion
7:
Transaktion
7verbrauchte die längste (verstrichene) Antwortzeit: 94,236 Millisekunden (ms), was 56,96 Prozent der gesamten Antwortzeit entspricht.Transaktion
7startete eine E/A-Vorgang in der LibrarySYSEDM(TA-Lib-Spalte), ProgrammMOPTTEST(TA-Prog), Programmzeile0020(TA-Line).Transaktion
7hat auf27Programme zugegriffen und33Datenbankaufrufe und30externe Programmaufrufe durchgeführt.Im obigen Beispiel sind alle Zähler für Statement-Ereignisse
0, da Statement-Ereignisse während diesem Profiler-Lauf nicht gesammelt wurden.Am Ende der Transaktionszusammenfassung werden die Gesamtzahlen (
Total) der profilierten Transaktionen aufgelistet.
Die Programmabdeckungstabelle wird generiert, wenn PROGRAM=ON für eine
NCVF-Ressourcendatei angegeben ist.
Die Programmabdeckungstabelle zeigt die Codeabdeckungsergebnisse für jedes aufgerufene
Natural-Objekt. Wenn die Tabelle im Textformat angegeben wird, werden nur die
GP-Abdeckungsergebnisse (einschließlich Copycodes) angezeigt. Im CSV-Format
(kommagetrennte Werte) zeigt die Tabelle Zeilen, die Copycode-Werte enthalten,
zusätzliche Spalten mit Quellcodezählern (Copycodes nicht enthalten) und Informationen
zu INCLUDE-Statements.
Im Textformat enthält die Tabelle die Anzahl der Abdeckungen für jede aufgerufene Library und für die gesamte Anwendung.
Die Tabelle enthält die folgenden Spalten:
| Spalte | Beschreibung | |
|---|---|---|
| Evaluation | Der Auswertungstyp. Mögliche Typen sind: | |
| Program | Für Programmabdeckungsdaten. | |
| Event (Ereignis) | Für Statement-Abdeckungsdaten. | |
| Statistics | Für Profiler-Statistikdaten. | |
| Object Count | Die Anzahl der katalogisierten Objekte (GPs), die in der Tabelle aufgeführt sind. | |
| Object Type | Der Typ des Natural-Objekts, z.B. Programm und Subprogramm. | |
| Library | Die Natural-Library, die das Objekt enthält. | |
| Object | Der Name des Natural-Objekts. | |
| Copycode ID | Der eindeutige Bezeichner der Copycode-Instanz
im katalogisierten Objekt (GP). Das Programm erhält die Copycode-ID
0.
|
|
| Copycode Library | Die Library, aus der der Copycode eingefügt wird. | |
| Copycode Name | Der Name des Copycode. | |
| GP Coverage% | Der Prozentsatz der Objektabdeckung, wobei
INCLUDE-Statements aufgelöst werden.
|
|
| GP Covered | Die Anzahl der abgedeckten (ausgeführten)
Statements, wobei INCLUDE-Statements aufgelöst werden.
|
|
| GP Missed | Die Anzahl der "missed" (nicht
ausgeführten) Statements im Objekt, wobei INCLUDE-Statements
aufgelöst werden.
|
|
| GP Total | Die Gesamtzahl aller ausführbaren Statements
im Objekt, wobei INCLUDE-Statements aufgelöst werden.
|
|
| Src Coverage% | Der Prozentsatz der Objektabdeckung, wobei
INCLUDE-Statements nicht aufgelöst werden.
|
|
| Src Covered | Die Anzahl der abgedeckten (ausgeführten)
Statements, wobei INCLUDE-Statements nicht aufgelöst
werden.
|
|
| Src Missed | Die Anzahl der "missed" (nicht
ausgeführten) Statements im Objekt, wobei INCLUDE-Statements nicht
aufgelöst werden.
|
|
| Src Total | Die Gesamtzahl aller ausführbaren Statements
im Objekt, wobei INCLUDE-Statements nicht aufgelöst werden.
|
|
| First Statement | Die ID des ersten Statements des Objekts oder Copycodes. | |
| INCLUDE CC-ID | Nur bei Copycode.
Die Copycode-ID des Objekts oder des Copycode, der den Copycode enthält. |
|
| INCLUDE Object | Nur bei Copycode.
Der Name des Objekts oder des Copycode, der den Copycode enthält. |
|
| INCLUDE Line | Nur bei Copycode.
Die Zeilennummer des
|
|
Das folgende Beispiel zeigt das Ergebnis der Programmabdeckung im Textformat
Program Coverage ---------------- Library Object Ty Coverage% Covered Missed Total COVDEMO TESTCOVN N 84.0% 37 7 44 COVDEMO TESTCOVP P 69.2% 9 4 13 COVDEMO -------- -- 80.7% 46 11 57 Totals -------- -- 80.7% 46 11 57
Erläuterungen:
Die Anwendung greift auf zwei Objekte zu: Das TESTCOVN-Subprogramm
(N) und das TESTCOVP-Programm (P).
In TESTCOVN gibt es 44 ausführbare Statements
(Objektcode-Anweisungen), von denen 37 abgedeckt (ausgeführt) und
7 nicht ausgeführt wurden ("missed"), was eine
Gesamtabdeckung von 84,0% ergibt.
Die aufsummierten Werte der beiden Objekte, auf die in der Library
COVDEMO zugegriffen wird, zeigen eine Abdeckung von
80,7%.
Die Gesamtabdeckung beträgt ebenfalls 80,7%, weil die Objekte nur auf
eine Library zugreifen.
Die Statement-Abdeckung wird generiert, wenn EVENT=ON für eine
NCVF-Ressourcendatei angegeben wird.
Für die Statement-Abdeckung liest die Profiler Utility den Quellcode der überwachten
Objekte. Zuerst sucht sie den Quellcode in der Library, die die Natural
Profiler-Ressource enthält. Wenn der Quellcode in dieser Library nicht gefunden wird,
wird er in der Library gesucht, die mit den Profiler-Daten angegeben ist. Wenn der
Quellcode auch dort nicht gefunden wird oder wenn der Quellcode nicht mit den
gesammelten Daten übereinstimmt, werden im Statement-Abdeckungsreport Quellcodezeilen
nicht gedruckt. Die Profiler Utility löst INCLUDE-Statements auf und fügt
den Quellcode des entsprechenden Copycodes in das inkludierende Programm ein. Wenn die
INCLUDE-Struktur nicht aufgelöst werden kann, werden die Copycodes
separat gedruckt.
Wenn ein Quellcode nach der Ausführung der Abdeckung geändert wurde, kann die Profiler Utility nicht mehr die vollständigen Informationen bereitstellen. Um dies zu verhindern, kopieren Sie die Ressourcendatei zusammen mit den zugehörigen Programmquellen in eine andere Library. Wenn die Profiler Utility die Ressource liest, werden die Quellcodes aus der Ressource-Library genommen und eine Änderung der ursprünglichen Quellcodes hat keinen Einfluss auf die Statement-Abdeckung.
Die Statement-Abdeckung zeigt den Prozentsatz der Statements, die für jede Quellcodezeile der aufgerufenen Programme abgedeckt werden. Wenn das Ergebnis im Textformat geschrieben ist, werden für jedes in der Statistik aufgeführte Objekt die Objektabdeckungswerte vor den Statement-Abdeckungsdaten angezeigt. Wenn das Ergebnis im CSV-Format (kommagetrennte Werte) geschrieben wird, werden zusätzliche Informationen zur Abdeckung der Statement-Abdeckung bereitgestellt.
Die Tabelle enthält die folgenden Spalten:
| Spalte | Beschreibung | |
|---|---|---|
| Evaluation | Der Auswertungstyp. Mögliche Typen sind: | |
| Program | Für Programmabdeckungsdaten. | |
| Event (Ereignis) | Für Statement-Abdeckungsdaten. | |
| Statistics | Für Profiler-Statistikdaten. | |
| Object Count | Die Anzahl der in der Tabelle aufgeführten Objekte (GPs). | |
| Library | Die Natural-Library, die die Objekte enthält. | |
| Object | Der Name des Natural-Objekts. | |
| Copycode ID | Der eindeutige Bezeichner der Copycode-Instanz
im zugehörigen katalogisierten Objekt. Das Programm erhält die Copycode-ID
0.
|
|
| Copycode Library | Die Library, die den Copycode enthält (wenn Copycode aktiv ist). | |
| Copycode Name | Der Name des Copycodes (wenn Copycode aktiv ist). | |
| Line | Die Zeilennummer im Natural Source-Objekt, z.
B. 0120.
|
|
| Source | Die Natural-Quellcodezeile, die eine
Statement-Definition enthält, z. B. MOVE #A TO #B.
|
|
| Coverage% | Der Prozentsatz der Statement-Abdeckung der Zeile. | |
| Covered | Die Anzahl der in der Zeile abgedeckten (ausgeführten) Statements. | |
| Missed | Die Anzahl der "missed" (nicht ausgeführten) Statements in der Zeile. | |
| Total | Die Gesamtzahl aller ausführbaren Statements (Objektcode-Anweisungen) in der Zeile. | |
| Item Coverage | Gibt an, welche Statement-Elemente
(Objektcode-Anweisungen) in der Zeile abgedeckt oder nicht abgedeckt wurden
("missed"). Jedes Statement wird entweder durch 1
oder 0 dargestellt, wobei 1 ein abgedecktes Statement
und 0 ein nicht abgedecktes ("missed") Statement
anzeigt. Zum Beispiel: Ein Wert von x100 zeigt an, dass nur das
erste von drei Statements in der Zeile abgedeckt ist.
|
|
| Mark | Zeigt den Abdeckungsstatus der Zeile an.
Die Spalte |
|
Im folgenden Beispiel wird angenommen, dass die Entwicklungsabteilung eine neue Version
des TESTCOVN-Subprogramms an die Qualitätssicherungsabteilung geliefert
hat. Nach dem Ausführen der Testprogramme zeigt die Statement-Abdeckung des Subprogramms
das folgende Ergebnis (Textformat):
Statement Coverage ------------------ M Cov% CC-Lib CC-Name Line Source * 0010 * Test function Coverage * 0020 * Subprogram TESTCOVN + 0030 DEFINE DATA + 0040 PARAMETER + 0050 1 FUNC (I2) /* Function + 0060 1 RET-CODE (I4) /* Return code + 0070 END-DEFINE * 0080 * * 0090 /* Return 0 by default C 100% 0100 RESET RET-CODE * 0110 * C 100% 0120 DECIDE ON FIRST VALUE OF FUNC P 50% 0130 VALUE 0 M 0% 0140 PRINT 'Test function 0' P 66% 0150 VALUE 1 C 100% 0160 PRINT 'Test function 1' C 100% 0170 VALUE 2 C 100% 0180 PRINT 'Test function 2' C 100% 0190 VALUE 3 C 100% 0200 PRINT 'Test function 3' C 100% 0210 VALUE 4 C 100% 0220 PRINT 'Test function 4' C 100% 0230 VALUE 5 C 100% 0240 PRINT 'Test function 5' C 100% 0250 VALUE 6 C 100% 0260 PRINT 'Test function 6' C 100% 0270 VALUE 7 C 100% 0280 PRINT 'Test function 7' C 100% 0290 VALUE 8 C 100% 0300 PRINT 'Test function 8' P 33% 0310 VALUE 9 M 0% 0320 PRINT 'New test function 9' C 100% 0330 NONE VALUE M 0% 0340 RET-CODE := 1 /* Unsupported function + 0350 END-DECIDE * 0360 * C 100% 0370 END
Erläuterungen:
Die Spalte Mark (M) zeigt an, ob eine Zeile abgedeckt
(C = Covered), nicht abgedeckt (M = Missed) oder
teilweise abgedeckt (P = Partially) ist.
Keine Testfälle decken die Funktionen Test function 0 und New
test function 9 ab (bezeichnet mit M und 0%
Abdeckung). Der Fall NONE VALUE wird ebenfalls nicht abgedeckt.
Alle anderen Testfälle sind abgedeckt (bezeichnet mit C und
100% Abdeckung).
Ein Natural VALUE-Statement entspricht mehreren Objektcode-Statements.
Die Abdeckung von 50% und 60% für VALUE 0-
und VALUE 1-Statements zeigt an, dass nur ein Teil dieser
Objektcode-Statements abgedeckt ist.
Dies liegt daran, dass eines der generierten Objektcode-Statements aus technischen
Gründen zum vorangehenden Statement und die anderen zum aktuellen
VALUE-Statement gehören.
Infolge dieser Abdeckungsanalyse müssen die Testfälle so angepasst werden, dass auch
die Test function 0 und die Test function 9 (und
möglicherweise der Fehlerfall mit einem nicht unterstützten Funktionscode) abgedeckt
sind.
Voraussetzungen: Microsoft Excel und Natural für Windows oder Natural für Linux.
Wenn Sie das Abdeckungsergebnis mit Microsoft Excel analysieren möchten, können Sie die Microsoft Excel-Vorlage verwenden, die mit Natural für Windows und Natural für Linux geliefert wird. Führen Sie dazu die folgenden Schritte aus:
Führen Sie die Profiler READ-Funktion aus und schreiben Sie die
Ausgabedaten im CSV-Format (kommagetrennte Werte) in Arbeitsdatei 7 (Work File
7). Zum Beispiel:
FUNCTION=READ /* Read Profiler Data RESOURCE-NAME='Test' /* Resource name RESOURCE-LIB=PRFDATA /* Resource library RESOURCE-TYPE=NCVF /* Use resource type NCVF EVENT=ON /* Print statement coverage PROGRAM=ON /* Print program coverage STATISTICS=ON /* Print statistics PRINT=ON /* Write to standard output EXPORT=ON /* Write to Work File 7 FORMAT=COMMA /* Export in CSV format
Falls Ihr Microsoft Excel Semikolons als Trennzeichen benötigt, geben Sie Folgendes an:
FORMAT=SEMICOLON /* Export in CSV format
Exportieren Sie die Daten von Arbeitsdatei 7 mit einem beliebigen Tool (z. B. FTP) als CSV-formatierte Datei in eine Windows-Umgebung.
Öffnen Sie die CSV-Datei mit Microsoft Excel.
Ordnen Sie die Daten neu an, so dass sich jeder Auswertungstyp (Programm, Ereignis, Statistik) auf einem eigenen Arbeitsblatt in der Microsoft Excel-Datei befindet.
Öffnen Sie die gelieferte Vorlage TESTCOV.XLSX mit Microsoft Excel.
Die Vorlage ist im Unterverzeichnis RES (Ressourcen) der
Natural-System-Library SYSPRFLR enthalten.
Kopieren Sie für jedes Arbeitsblatt das Format aus der Vorlage in Ihr Microsoft Excel:
Klicken Sie auf die obere linke Ecke der Tabelle in der Vorlage, um alle Daten in der Tabelle zu markieren.
Klicken Sie auf die Microsoft Excel-Funktion Copy format.
Klicken Sie auf die obere linke Ecke der Tabelle in Ihrem Arbeitsblatt, um das Format zu kopieren.
Jetzt sind alle Einträge wie in der Vorlage formatiert. Die Quellcodezeilen sind wie folgt gefärbt und markiert:
| Farbe | Markierung | Beschreibung |
|---|---|---|
| Grün | C |
Alle Statements in der Zeile sind abgedeckt ("Covered"). |
| Gelb | P |
Die Statements in der Zeile sind teilweise abgedeckt ("Partially"). |
| Rosa | M |
Alle Statements in der Zeile werden nicht abgedeckt ("Missed"). |
| Grau | * |
Ein Kommentar oder eine leere Zeile. |
| Rot | E |
Fehler aufgetreten.
Zum Beispiel, wenn die Abdeckungsanalyse eine Zeilennummer gesammelt hat, aber die entsprechende Quellcodezeile nicht gefunden wird. |
| Keine (weiß) | + |
Alle anderen Zeilen, z.B. Fortsetzungszeilen eines Statement. |
Das folgende Beispiel zeigt einen Arbeitsblattauszug der Codeabdeckung für das Programm
TESTCOVP mit inkludiertem Copycode TESTCOVC ohne die
Spalten, die den Objektnamen und die Library enthalten:

Erläuterungen:
Die Quellcodezeilen des Copycode TESTCOVC sind in den Quellcode des
Programms TESTCOVP direkt nach dem entsprechenden
INCLUDE-Statement eingefügt.
Die (rosa) Zeilen 40 bis 70 des Copycodes enthalten nicht
abgedeckte ("missed") Statements, was bedeutet, dass sie im Testlauf
nicht ausgeführt wurden.
Alle anderen Zeilen (grün), die ausführbare Statements enthalten, sind abgedeckt.
Ein FOR-Statement entspricht vier Objektcode-Statements. Alle vier
Statements werden, wie in x1111 in der Spalte Item
Coverage angezeigt, behandelt.
Wenn STATISTICS=ON angegeben wird, werden die Profiler-Statistiken
aufgelistet.
Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, werden die
Eigenschaften und Werte der Profiler-Statistiken als separate Spalten zum Ereignis- oder
Konsolidierungs-Trace hinzugefügt. Wenn Abdeckungsdaten im CSV-Format exportiert werden,
werden die Statistikwerte in zusätzlichen Zeilen hinzugefügt, die durch den Wert
Statistics in der Spalte Evaluation gekennzeichnet sind.
- Beispiel für Statistik:
Das folgende Beispiel zeigt einen Auszug aus den Statistikdaten einer NPRC-Ressourcendatei:
*************************************************************************** * 11:02:39 ***** NATURAL PROFILER UTILITY ***** 2015-08-05 * User SAGTEST1 - Statistics - RESDATA * * General Info * Machine class ...................... MAINFRAME * Environment ........................ Batch ... * Profiler Resource File * Resource name ...................... EDM-MONITOR.nprc * Resource type ...................... Natural Profiler Resource Consolidated * Resource allocation date ........... 2015-07-27 10:36:19.6 * Resource size (bytes) .............. 565160 ... * * Monitor Session * Monitor start time ................. 2015-07-27 10:20:57.2 * Monitor end time ................... 2015-07-27 10:21:42.8 * Monitor elapsed time (sec) ......... 45.519604 * * Trace Session * First library ...................... SYSEDMD * First program ...................... MENU * Highest level ...................... 10 * Trace start time ................... 10:20:58.219911 * Trace end time ..................... 10:21:42.248348 * Trace elapsed time (sec) ........... 44.028437 ... * Data Processing * Number of events ................... 895936 ... * Data Consolidation * Consolidation ...................... ON * Consolidation records .............. 21624 * Consolidation elapsed time (sec) ... 15.643516 * Consolidation factor ............... 41.4 * Consolidation records/block ........ 191.3 * Bytes/consolidation record ......... 25.8 * ... ***************************************************************************Erläuterungen:
Die Ressource
EDM-MONITOR.nprcwurde am 27.07.2015 um 10:36:19 Uhr zugewiesen und hat eine Größe von 565160 Bytes.Die profilierte Anwendung lief am selben Tag um 10:20:58 Uhr für 44,0 Sekunden und startete mit dem Programm
MENUin der LibrarySYSEDMD.Die profilierte Anwendung generierte insgesamt 895936 Natural-Ereignisse. Die Datenkonsolidierung dauerte 15,6 Sekunden und reduzierte die Anzahl der Datensätze auf 21624, was einem Konsolidierungsfaktor von 41,4 entspricht.
Alle bereitgestellten Statistikinformationen werden im Abschnitt Profiler-Statistikdaten erläutert.
Im Allgemeinen werden Profiler-Ressourcen mit der Natural Utility SYSMAIN, NaturalONE oder Natural Studio als NPRF-, NPRC- oder NCVF-Dateien aufgeführt. Diese Tools bieten auch Funktionen zum Kopieren, Umbenennen und Löschen von Ressourcendateien.
Die Natural Profiler Rich GUI-Schnittstelle listet auch die Profiler-Ressourcen auf und bietet eine Funktion zum Löschen einer Profiler-Ressourcendatei.
Darüber hinaus können Sie Profiler Utility-Funktionen verwenden, um Profiler-Ressourcendateien aufzulisten und zu löschen.
Dieser Abschnitt behandelt die folgenden Themen:
Die Funktion LIST der Profiler Utility listet die
Profiler-Ressourcendateien einer bestimmten Natural-Library sowie das Datum und die
Uhrzeit auf, zu der die Ressourcendateien zugeordnet wurden.
Syntax von LIST:
FUNCTION=LIST |
[RESOURCE-LIB=library-name]
|
[RESOURCE-TYPE={NPRF|NPRC|NCVF}]
|
[PRINT={ON|OFF}]
|
[EXPORT={ON|OFF}]
|
[FORMAT={TEXT|COMMA|SEMICOLON}]
|
Syntax-Beschreibung:
| Schlüsselwort für LIST | Wert | Beschreibung |
|---|---|---|
RESOURCE-LIB |
library-name |
Der Name der Natural-Library, die die
Profiler-Ressourcendateien enthält, die Sie auflisten möchten.
Standardwert: Der Name der aktuellen Library. |
RESOURCE-TYPE |
Gibt den Typ der aufzulistenden Ressourcendateien an: NPRF,
NPRC oder NCVF.
Standardeinstellung: Alle Typen werden aufgelistet, wenn hier kein Wert angegeben ist. |
|
NPRF |
Listet nur NPRF-Ressourcendateien (Natural Profiler Resource File) auf. | |
NPRC |
Listet nur NPRC-Ressourcendateien (Natural Profiler Resource Consolidated) auf. | |
NCVF |
Listet nur NCVF-Ressourcendateien (Natural Code Coverage File) auf. | |
PRINT |
Gibt an, ob das Ergebnis in die Standardausgabe geschrieben wird. | |
ON |
In die Standardausgabe schreiben. | |
OFF |
Nicht in die Standardausgabe schreiben. | |
EXPORT |
Gibt an, ob das Ergebnis in Natural-Arbeitsdatei (Work
File) 7 geschrieben wird.
|
|
ON |
In Natural-Arbeitsdatei 7 schreiben. | |
OFF |
Nicht in Natural-Arbeitsdatei 7 schreiben. | |
FORMAT |
Gibt das Format an, in dem die exportierten Daten in Arbeitsdatei 7 geschrieben werden. | |
TEXT |
Daten im Freitextformat schreiben. | |
COMMA |
Daten im CSV-Format schreiben mit einem Komma
(,), das als Trennzeichen verwendet wird.
|
|
SEMICOLON |
Daten im CSV-Format schreiben mit einem Semikolon
(;), das als Trennzeichen verwendet wird.
|
- Beispiel für LIST:
Das folgende Beispiel listet die NPRF-Profiler-Ressourcendateien der Library
PRFDATAauf. Die Liste wird in die Standardausgabe und in die Arbeitsdatei 7 im Textformat geschrieben.FUNCTION=LIST /* List Profiler resource files RESOURCE-LIB=PRFDATA /* Resource library RESOURCE-TYPE=NPRF /* List NPRF resource files PRINT=ON /* Write to standard output EXPORT=ON /* Write to Work File 7 FORMAT=TEXT /* Export in text formatAusgabe:
Natural Profiler Resources -------------------------- Library: PRFDATA Resource type: nprf Count Date Time Name 1 2015-06-15 14:32:18 Hello1.nprf 2 2015-06-26 18:39:57 QDTest1.nprf 3 2015-06-24 22:00:35 QETest1.nprf 4 2015-06-30 14:32:42 Studio.nprf 5 2015-07-02 15:02:32 Test.nprf Number of nprf resources in library PRFDATA: 5
Wenn Sie eine große Ressourcendatei löschen oder ersetzen, kann es vorkommen, dass Sie die folgende Fehlermeldung erhalten:
Error - NAT3047 Maximum value for Adabas parameter NISNHQ was
exceeded.
(Fehler - NAT3047 Maximalwert für den Adabas-Parameter NISNHQ wurde überschritten.)
In diesem Fall haben Sie drei Möglichkeiten:
Bitten Sie Ihren Datenbankadministrator, den Wert des Adabas-Parameters
NISNHQ zu erhöhen.
Benutzen Sie die Delete-Funktion der Profiler Rich
GUI-Schnittstelle. Sie verwendet die gleiche Technik wie die
DELETE-Funktion der Profiler Utility.
Benutzen Sie die DELETE-Funktion der Profiler Utility, um ein
"unsauberes" Löschen der Ressource durchzuführen. Diese Funktion
löscht die Ressource nicht in einem einzigen großen Schritt, sondern in Blöcken (mit
einem Ende der Transaktion nach jedem Block). Wenn die DELETE-Funktion
aus irgendeinem Grund fehlschlägt, müssen Sie sie wiederholen, um inkonsistente
Daten zu beseitigen.
Syntax von DELETE:
FUNCTION=DELETE |
[RESOURCE-NAME=resource-name]
|
[RESOURCE-TYPE={NPRF|NPRC|NCVF|NPRK|NONE}]
|
[RESOURCE-LIB=library-name]
|
Syntax-Beschreibung:
| Schlüsselwort für DELETE | Wert | Beschreibung |
|---|---|---|
RESOURCE-NAME |
resource-name |
Der Name der Profiler-Ressourcendatei, die Sie löschen
möchten.
Mögliche Erweiterungen sind Standardwert: keiner Wenn |
RESOURCE-TYPE |
Der Standard-Ressourcentyp (Erweiterung), der gelöscht
werden soll, wenn keine Erweiterung mit RESOURCE-NAME angegeben
ist.
Standardwert: |
|
NPRF |
Der Standard-Ressourcentyp ist NPRF mit der Erweiterung
.nprf.
|
|
NPRC |
Der Standard-Ressourcentyp ist NPRC mit der Erweiterung
.nprc.
|
|
NCVF |
Der Standard-Ressourcentyp ist NCVF mit der Erweiterung
.ncvf.
|
|
NPRK |
Der Standard-Ressourcentyp ist NPRK mit der Erweiterung
.nprk.
|
|
NONE |
Die Ressource mit dem Kurznamen
resource-name wird
gelöscht.
|
|
RESOURCE-LIB |
library-name |
Der Name der Natural-Library, die die Ressource
enthält, die Sie löschen möchten.
Standardwert: Der Name der aktuellen Library |
FUNCTION=DELETE /* Delete a Profiler resource file RESOURCE-NAME='Test' /* Resource name RESOURCE-TYPE=NPRF /* Resource type RESOURCE-LIB=PRFDATA /* Resource library
Der Profiler kann Eingabedaten von einem Natural-Textobjekt lesen. Die Syntax der Daten im Natural-Textobjekt ist die gleiche wie für den primären Kommandoeingabedatensatz CMSYNIN (siehe Syntax und Schlüsselwörter).
Um Profiler-Eingabedaten aus einem Natural-Textobjekt zu inkludieren:
Geben Sie die folgenden Profiler-Schlüsselwörter ein:
INCLUDE-LIB=library-name INCLUDE=object-name
Die Schlüsselwortsyntax wird in Profiler Utility-Schlüsselwörter erklärt.
Die Daten im Natural-Textobjekt werden den Profiler-Eingabedaten in der Zeile nach dem
INCLUDE-Schlüsselwort hinzugefügt. Die Profiler-Eingabedaten können mehrere
INCLUDE-Schlüsselwörter enthalten, und die zugehörigen Natural-Textobjekte
können auch INCLUDE-Schlüsselwörter enthalten. Wenn ein Natural-Textobjekt
ein END-PROFILER-Schlüsselwort enthält, wird die Profiler Utility beendet und
alle verbleibenden Daten in dem (den) Natural-Textobjekt(en) werden ignoriert.
In der Natural-System-Library SYSPRFLR werden Textobjekte ausgeliefert,
deren Namen mit X beginnen, und die als Profiler-Eingabe verwendet werden
können. Die einzelnen Profiler-Funktionen, die sie ausführen, werden in den Quellcodes
dieser Objekte beschrieben.
Wir empfehlen, keine Objekte in der System-Library SYSPRFLR zu ändern, da
sie überschrieben oder entfernt werden können, wenn eine neue Natural-Version installiert
wird. Kopieren Sie die erforderlichen Objekte in eine User Library, bevor Sie sie
bearbeiten.
Das folgende Beispiel fügt den Inhalt des Natural-Textobjekts MYPROF aus
der Library MYLIB zu den Profiler-Eingabedaten hinzu:
INCLUDE-LIB=MYLIB INCLUDE=MYPROF
Im folgenden Beispiel wird der Inhalt des Natural-Textobjekts XINIT aus
der Library SYSPRFLR zu den Profiler-Eingabedaten hinzugefügt. Das Objekt
initialisiert und startet die Profil-Erstellung ohne Konsolidierung und ohne
Statement-Ereignissammlung. Darüber hinaus wird die Profiler Utility beendet, so dass
nach dem INCLUDE-Schlüsselwort keine weitere Profiler-Eingabe erwartet
wird.
INCLUDE=XINIT
Der Natural Profiler sammelt detaillierte Informationen über jedes Natural-Ereignis, das auftritt, während eine Natural-Anwendung ausgeführt wird. Diese Daten können in der Ereignisverfolgung (Event-Trace) eingesehen werden.
Die für die Natural-Code-Abdeckung geschriebenen Traces werden im Abschnitt Ablaufverfolgung (Tracing) beim Messen der Natural-Codeabdeckung beschrieben.
Die Profiler Utility bietet die folgenden Optionen zum Schreiben einer Profiler-Ereignisverfolgung:
Schreiben des Trace in die Standardausgabe der Profiler-Monitor-Session
(MONPRINT-Dataset), während die Anwendung profiliert wird.
Schreiben des Trace in die Standardausgabe, während die NPRF-Daten konsolidiert werden. In diesem Fall zeigt die Ereignisverfolgung die Delta-Werte der verstrichenen (elapsed) Zeit und der CPU-Zeit anstelle von ereignisspezifischen Daten.
Schreiben des Trace beim Lesen einer Profiler NPRF-Ressourcendatei mit der Profiler
Utility-Funktion READ.
Anmerkung
Die Ereignisverfolgung (Event-Trace) kann auch in NaturalONE aufgelistet
werden.
Um die die Ereignisverfolgung zu
aktivieren:
Geben Sie das folgende untergeordnete Schlüsselwort der INIT-Funktion
der Profiler Utility ein:
TRACE-EVENT=ON
Geben Sie das folgende untergeordnete Schlüsselwort der CONSOLIDATE-Funktion der
Profiler Utility ein:
TRACE-EVENT=ON
Geben Sie das folgende untergeordnete Schlüsselwort der READ-Funktion
der Profiler Utility ein:
EVENT=ON
Die Profiler-Ereignisverfolgung enthält die folgenden Spalten:
| Spalte | Beschreibung |
|---|---|
| Count | Ereigniszähler. |
| Time | Zeitpunkt des Ereignisses.
Einheit: Stunde:Minute:Sekunde.Mikrosekunden |
| CPU-Time | Session-CPU-Zeit.
Einheit: Mikrosekunden |
| Ev | Ereignistyp. |
| Lev | Programmebene. |
| Library | Programm-Library. |
| Program | Programmname (Natural-Objekt) . |
| Line | Zeilennummer des ausgeführten Programm-Statement. |
| CC-Lib | Copycode-Library (wenn Copycode aktiv ist). |
| CC-Name | Copycode-Name (wenn Copycode aktiv ist). |
| Statement | Natural-Statement, das zurzeit ausgeführt wird.
Aus technischen Gründen gibt es keine Eins-zu-Eins-Beziehung zwischen einem Natural-Quellcode-Statement und dem entsprechenden Objektcode im katalogisierten Objekt. Daher können sich die in der Profiler-Ereignisverfolgung aufgeführten Anweisungen von den Anweisungen im Quellcode unterscheiden. |
| Local-Data | Ereignisspezifische Daten wie die Adabas-Datenbankkennung
(DBID) und die Dateinummer (FNR).
Diese Daten werden nur für die Funktionen INIT und READ der Profiler Utility angezeigt. |
| Elapsed (ms) | Verstrichene Zeit für die Verarbeitung des Ereignisses.
Einheit: Millisekunden Diese Daten werden nur für dieCONSOLIDATE-Funktion der
Profiler Utility angezeigt.
|
| CPU-Delta | CPU-Zeit, die für die Verarbeitung des Ereignisses aufgewendet
wurde.
Einheit: Millisekunden |
Im folgenden Beispiel druckt die Funktion READ der Profiler Utility das
Event Trace aus:
FUNCTION=READ /* Read event data EVENT=ON /* Write event trace
Das Event Trace wird in die Standardausgabe geschrieben:
Count Time CPU-Time (ms) Ev Lev Library Program Line CC-Lib CC-Name Statement Local-Data
0 17:38:17.200951 42.324 MP 003 SYSPRFLR PRBINIT 8370 Call Monitor pause requested
0 17:38:17.204508 43.471 MP 003 SYSPRFLR PRBSTART 1760 Call Start of block filter
11 17:38:17.218379 48.874 DB 000 0000 00010/00032 S1
12 17:38:17.218941 48.897 DA 000 0000 00010/00032 S1 Rsp: 0
13 17:38:17.218944 48.910 PL 000 0000 Execute PRFDEMO/XPROF
14 17:38:17.218945 48.916 PS 001 PRFDEMO XPROF 0000 PgmStart 00010/00032 Type: P
15 17:38:17.218956 48.979 IB 001 PRFDEMO XPROF 0300 Input Out: 133 In: 0
16 17:38:17.219235 49.046 IA 001 PRFDEMO XPROF 0300 Input Out: 133 In: 80
17 17:38:17.219258 49.182 DB 001 PRFDEMO XPROF 0370 Callnat 00010/00032 S1
18 17:38:17.220426 49.211 DA 001 PRFDEMO XPROF 0370 Callnat 00010/00032 S1 Rsp: 0
19 17:38:17.220427 49.216 DB 001 PRFDEMO XPROF 0370 Callnat 00010/00032 S1
... |
Beim Messen der Natural-Codeabdeckung (Code Coverage) stehen zwei Trace-Optionen zur Verfügung:
Die Ereignisverfolgung (Event
Trace) listet alle überwachten Ereignisse auf. Dies sind standardmäßig
die Ereignisse Program Start (PS) und Natural Statement
(NS). Wenn der Profiler das GP liest, schreibt er außerdem einen
Ereignisverfolgungseintrag für jedes im GP gefundene Statement. Diese Einträge werden
durch den Pseudo-Ereignistyp GP angezeigt.
Die Codeabdeckungsverfolgung (Coverage Trace) listet alle Datensätze auf, die in die Natural-Abdeckungsressourcendatei (Natural Coverage Resource File) geschrieben werden.
Wenn die Abdeckungsressource mit der Profiler Utility-Funktion READ gelesen
wird, ist die folgende Trace-Option verfügbar:
Die interne Datenverfolgung listet alle Datensätze auf, die aus der Natural-Abdeckungsressourcendatei gelesen werden.
Um die Ablaufverfolgung für die Codeabdeckung zu aktivieren:
Aktivieren Sie die Ereignisverfolgung, indem Sie das folgende untergeordnete
Schlüsselwort der COVERAGE-Funktion der Profiler Utility angeben:
TRACE-EVENT=ON
Aktivieren Sie die Ablaufverfolgung für die Codeabdeckung, indem Sie das folgende
untergeordnete Schlüsselwort der READ-Funktion der Profiler Utility
angeben:
TRACE-COVERAGE=ON
Aktivieren Sie die interne Ablaufverfolgung, indem Sie das folgende untergeordnete
Schlüsselwort der READ-Funktion der Profiler Utility angeben:
TRACE=9
Die folgende Tabelle beschreibt die in den Ablaufverfolgungen (Traces) aufgeführten Eigenschaften und gibt mit (X) an, für welchen Trace-Typ die Daten bereitgestellt werden.
Event Trace = Ereignisverfolgung, Coverage Trace = Codeablaufverfolgung, Internal Trace = Interne Ablaufverfolgung:
| Eigenschaft | Event Trace | Coverage Trace | Internal Trace | Beschreibung |
|---|---|---|---|---|
| Count | X | X | X | Der Ereigniszähler. |
| Ev | X | X | X | Der Ereignistyp.
Siehe Gesammelte Ereignisse und Daten. Der Pseudo-Ereignistyp |
| Library | X | X | X | Der Name der Natural-Library, die das Programm/Objekt enthält. |
| Program/Object | X | X | X | Der Name des Natural-Programms/Objekts. |
| Ty | - | X | X | Der Objekttyp, z.B. P, für Programm.
|
| CC-Lib | X | X | X | Der Name der Natural-Library, die den Copycode enthält (wenn Copycode aktiv ist). |
| CC-Name | X | X | X | Der Name des Copycodes. |
| Line | X | X | X | Die Nummer der Quellcodezeile. |
| Statement | X | X | - | Das ausgeführte Natural-Statement.
Aus technischen Gründen gibt es keine Eins-zu-Eins-Beziehung zwischen einem Natural-Quellcode-Statement und dem entsprechenden Objektcode im katalogisierten Objekt. Daher können sich die in der Profiler-Ereignisverfolgung aufgeführten Statements von den Statements in der Quelle unterscheiden. Für die Codeabdeckung wird der Statement-Objektcode nicht in der Ressourcendatei gespeichert. Daher kann er nur während der Datensammlung aufgelistet werden. |
| GP-Offset | X | - | - | Der Offset im GP.
Er identifiziert eindeutig das Statement-Element zum Zeitpunkt der Ausführung. |
| Size | X | - | - | Die Größe des Statement im GP. |
| CC-ID | - | X | X | Die Copycode-ID.
Sie identifiziert die Copycode-Instanz im
GP eindeutig. Das Programm erhält die Copycode-ID |
| Par-CC | - | X | X | Nur für Copycode.
Die übergeordnete Copycode-ID, die die Copycode-ID des Objekts/Copycodes ist, das/der den aktuellen Copycode enthält. |
| INCL | - | X | - | Nur für Copycode.
Die Zeilennummer des
|
| FirstS | - | X | X | Die Kennung (ID) des ersten Statement des Objekts oder Copycodes. |
| Stmts | - | X | X | Die Gesamtzahl der ausführbaren Statements im Objekt, wobei
alle INCLUDE-Statements aufgelöst werden.
|
| Item | X | X | X | Die Elementkennung (Item ID) des Statement.
Sie identifiziert eindeutig das Statement in der Ressourcendatei. |
| Cover | X | X | X | Das Abdeckungskennzeichen (Flag) des Statement:
(0 oder 1).
Wenn das GP gelesen wird, werden alle
Flags mit |
| Same | X | - | - | Wenn das GP gelesen wird, zeigt es an, wie viele nachfolgende
Statements den gleichen Objektcode und die gleiche Zeilennummer haben. Diese
Statements werden verworfen.
Immer wenn ein verworfenes Statement überwacht wird, wird das Statement, das sich vor dem verworfenen Statement befindet, als abgedeckt markiert. Die Spalte zeigt den GP-Offset des markierten Statement. |
Im folgenden Beispiel schreibt die Funktion COVERAGE der Profiler Utility
die Abdeckungsverfolgung:
FUNCTION=COVERAGE /* Initialize code coverage TRACE-COVERAGE=ON /* Write coverage trace
Das Coverage Trace wird in die Standardausgabe der
Profiler-Monitor-Session (MONPRINT-Dataset) geschrieben:
Natural Coverage Trace
----------------------
Count Ev Library Program Ty CC-Lib CC-Name Line Statement CC-ID Par-CC INCL FirstS Stmts Item Cover
1 PI COVDEMO TESTCOVN N 0 0 0000 1 44 1
2 NS COVDEMO TESTCOVN 0130 Compute 0 4 0
3 NS COVDEMO TESTCOVN 0140 Print 0 5 0
4 NS COVDEMO TESTCOVN 0150 Goto 0 6 0
5 NS COVDEMO TESTCOVN 0310 If 0 39 0
6 NS COVDEMO TESTCOVN 0310 Compute 0 40 0
7 NS COVDEMO TESTCOVN 0320 Print 0 41 0
8 NS COVDEMO TESTCOVN 0340 Compute 0 43 0
9 NS COVDEMO TESTCOVN 0100 Reset 0 1 1
10 NS COVDEMO TESTCOVN 0120 Reset 0 2 1
11 NS COVDEMO TESTCOVN 0130 If 0 3 1
12 NS COVDEMO TESTCOVN 0150 If 0 7 1
...
Das Profiler-interne Trace schreibt Profiler-Meldungen wie z.B. Fehler oder Warnungen.
Das interner Trace kann für Folgendes aktiviert werden:
Die Profiler-Monitor-Sessions (Datensammlung/Data Collection). Die Daten werden in die Standardausgabe der Monitor-Session geschrieben.
Die Profiler-Datenverarbeitungsfunktionen. Die Daten werden in die Standardausgabe geschrieben.
Die Profiler Rich GUI-Schnittstelle bietet ein aufklappbares Feld für die interne Trace-Aktivierung. Die Daten werden in die Standardausgabe geschrieben.
Um die interne Ablaufverfolgung für die Profiler-Trace-Session oder die
Datenverarbeitungsfunktionen zu aktivieren:
Geben Sie das folgende Profiler-Schlüsselwort ein:
TRACE=n
Dabei ist n die Trace-Ebene (siehe Trace-Ebenen).
Anmerkungen:
TRACE nicht angegeben ist) wird Trace-Ebene
2 (Warnungen) verwendet.
TRACE angegeben ist. Es wird daher empfohlen, das
TRACE-Schlüsselwort möglichst bald anzugeben.
TRACE angeben.
Um die interne Ablaufverfolgung für die Profiler-Monitor-Session zu aktivieren:
Geben Sie das folgende untergeordnete Schlüsselwort der INIT- oder der
COVERAGE-Funktion der Profiler Utility ein:
TRACE-MONITOR=n
Dabei ist n die Trace-Ebene (siehe Trace-Ebenen).
Anmerkung
Standardmäßig (wenn TRACE-MONITOR nicht angegeben ist) wird
Trace-Ebene 3 (Statistik) verwendet.
Die Trace-Ebene, die von den Profiler Trace- und Monitor-Sessions und von den Profiler-Datenverarbeitungsfunktionen verwendet werden, sind in der folgenden Tabelle aufgeführt. Im Allgemeinen enthält eine höhere Trace-Ebene auch die Informationen der unteren Trace-Ebenen. Wenn Sie beispielsweise Trace-Ebene 3 (Statistik) auswählen, werden auch Fehlermeldungen und Warnungen protokolliert.
Wir empfehlen, mindestens Trace-Ebene 2 (Warnungen) zu verwenden, damit Fehlermeldungen und Warnungen protokolliert werden. Für die Profiler-Monitor-Session ist Trace-Ebene 3 (Statistik) eine gute Wahl. Dann werden die Statistiken des Profiler-Laufs gedruckt (siehe Profiler-Statistiken). Höhere Trace-Ebenen für die Monitor-Session können extrem ausführlich sein und die Ausgabe kann mit dem Ereignis-Trace (falls aktiviert) vermischt werden.
| Trace-Ebene | Name | Beschreibung |
|---|---|---|
| 0 | No trace | Die interne Ablaufverfolgung des Profilers ist deaktiviert. |
| 1 | Error | Fehlermeldungen werden protokolliert. |
| 2 | Warning | Warnungen werden protokolliert. |
| 3 | Statistics | Trace-Session: Die Werte, die für die Profiler Utility
-Funktion INIT oder COVERAGE verwendet werden, werden
gedruckt.
Monitor-Session: Die Profiler-Statistikdaten werden gedruckt. Datenkonsolidierung: Die Profiler-Statistikdaten werden einschließlich der Konsolidierungsstatistiken gedruckt. |
| 4 | Function | Nachrichten für verwendete Profiler Utility-Schlüsselwörter
(FUNKTION, FILTER usw.) werden
protokolliert.
|
| 5 | Block | Die Statistiken für jeden Datenblock, der in die Profiler-Ressourcendatei geschrieben wurde, werden gedruckt. |
| 6 | Details | Detaillierte Informationen werden protokolliert. |
| 7 | Nicht benutzt. | |
| 8 | Nicht benutzt. | |
| 9 | Data | Abdeckungsressourcendaten beim Lesen einer NCVF-Abdeckungsressourcendatei verfolgen. |
| 10 | Internal | Interne Verwendung. |
Im folgenden Beispiel wird das interne Trace des Profilers für die Trace-Session auf
Ebene 4 (Funktion) gesetzt:
* Set Profiler internal trace TRACE=4 /* Trace level
Ausgabe der Profiler-Trace-Session für Trace-Ebene 4:
PRBMAIN : Profiler trace level: 4 PRBMAIN : Profiler On-Error: Terminate *************************************************************************** * 15:45:14 ***** NATURAL PROFILER UTILITY ***** 2014-12-17 * User SAGPRFD1 - Function INIT - PRBINIT * * Keyword Wert * -------------------- ---------------------------------------------------- * Resource ON * Resource-Lib SAGPROF * Resource-Name Test01.nprf * Replace Y * Wait-Full 60 * Wait-Empty 60 * Sampling OFF * Consolidate OFF * Trace-Monitor 5 * Trace-Event OFF * Trace-Consolidate OFF * -------------------- ---------------------------------------------------- *************************************************************************** PRBINIT : Profiler INIT function - Start monitor session. PRBINIT : Profiler INIT function - Monitor session started. Time: 1.0 sec. PRBINIT : Set trace session Id ...: 0000000000000001 PRBINIT : Set monitor session Id .: 0000000100000000 PRBINIT : Trace session successfully initialized. PRBFEVEN: Event filter: SI ST DB DA PL PS PT PR IB IA E CB CA U RS RI RO NS PRBSTART: Profiling started. PRBMAIN : Profiler - End of input. *************************************************************************** ... Output of the application ... |
Zusätzlich zu den Ereignisdaten sammelt der Profiler statistische Daten, die in die Profiler-Ressourcendatei geschrieben werden.
Die Profiler Utility bietet die folgenden Optionen zum Schreiben und Anzeigen von Profiler-Statistikdaten:
Statistikdaten in die Standardausgabe der Profiler-Monitor-Session
(MONPRINT-Dataset) schreiben, während die Anwendung profiliert wird
oder die Messung der Codeabdeckung durchgeführt wird.
Statistikdaten in die Standardausgabe schreiben, während die Daten konsolidiert werden.
Statistikdaten schreiben, während eine Profiler-Ressourcendatei mit der Profiler
Utility-READ-Funktion gelesen wird.
Eine Ressource über die Natural Profiler Rich GUI-Schnittstelle auswählen, um die entsprechenden Eigenschaften und Statistiken anzuzeigen.
Um Profiler-Statistikdaten zu schreiben, führen Sie einen der folgenden Schritte aus:
Geben Sie das folgende untergeordnete Schlüsselwort der INIT- oder der
COVERAGE-Funktion der Profiler Utility ein:
TRACE-MONITOR=3
oder eine höhere Trace-Ebene (siehe Trace-Ebenen). Trace-Ebene 3 ist auch die Standardebene für die Profiler-Monitor-Session.
Geben Sie das folgende Schlüsselwort ein, bevor Sie die
CONSOLIDATE-Funktion der Profiler Utility starten:
TRACE=3
oder eine höhere Trace-Ebene (siehe Trace-Ebenen).
Geben Sie das folgende untergeordnete Schlüsselwort der READ-Funktion
der Profiler Utility ein:
STATISTICS=ON
Die Profiler-Statistikdaten werden in Kategorien angezeigt, wobei die Eigenschaften eines ähnlichen Typs zusammengefasst werden. Folgende Kategorien stehen zur Verfügung:
Anmerkung
Die im folgenden Abschnitt aufgeführten Eigenschaften sind die Eigenschaften, die der
Profiler in allen Umgebungen bereithält. Die Profiler-Statistiken enthalten nur die
Eigenschaften, die für den aktuellen Lauf relevant sind. Daher werden nicht alle im
Abschnitt aufgeführten Eigenschaften in jedem Fall angezeigt.
Informationen zur Umgebung und Natural Profiler anzeigen.
| Eigenschaft | Beschreibung |
|---|---|
| Machine class | Der Name der Maschinenklasse, auf der die Natural-Anwendung läuft. |
| Environment | Die Umgebung, in der die Natural-Anwendung läuft, z.B. NaturalONE, Batch oder RPC. |
| Codepage | Die Codepage, die während der Überwachung der Natural-Anwendung verwendet wurde. |
| User | Die Kennung (ID) des Benutzers, der die Anwendung ausführt (Wert der
Systemvariablen *USER). Bei einem Batch-Job kann es
der Name des Jobs sein.
|
| Profiler version | Die interne Version des Profilers.
NaturalONE-Umgebung: Die Version des Profilers auf dem Server. |
| Profiler revision | Die interne Revision des Profilers. |
| Profiler revision date | Datum und Uhrzeit der Erstellung der Profiler-Revision. |
| Profiler client version | NaturalONE-Umgebung: Die Version des Profiler-Clients. |
| Profiler trace library | NaturalONE-Umgebung: Der Name der Natural-Library, die das interne Profiler-Trace und das Profiler-Ereignis-Trace enthält. |
| Profiler trace level | Die Ebene des internen Trace des Profilers. |
| Profiler trace member | NaturalONE-Umgebung: Der Name des Natural-Textobjekts, das das interne Profiler-Trace enthält. |
| Profiler event trace | Zeigt an, ob die Profiler-Ereignisverfolgung aktiviert wurde
(ON/OFF).
|
| Profiler event trace member | NaturalONE-Umgebung: Der Name des Natural-Textobjekts, das die Profiler-Ereignisverfolgung enthält. |
| Utility trace level | NaturalONE-Umgebung: Die Ebene des Natural Utility Trace. |
Informationen zu Profiler-Ressourcendateien anzeigen.
| Eigenschaft | Einheit | Beschreibung |
|---|---|---|
| Resource name | Der Name der Natural Profiler-Ressourcendatei. | |
| Resource type | Der Typ der Natural Profiler-Ressourcendatei: Natural Profiler Resource File (NPRF), Natural Profiler Resource Consolidated (NPRC) oder Natural Code Coverage File (NCVF). | |
| Resource short name | Großrechner: Der Kurzname der Natural Profiler-Ressourcendatei. | |
| Resource library | Der Name der Natural-Library, die die Natural Profiler-Ressourcendatei enthält. | |
| Resource DBID | Die Datenbankkennung (DBID) der Natural-Library, die die Natural Profiler-Ressourcendatei enthält. | |
| Resource FNR | Die Dateinummer (FNR) der Natural-Library, die die Natural Profiler-Ressourcendatei enthält. | |
| Resource allocation date | yyyy-mm-dd hh:ii:ss.t | Datum und Uhrzeit, wann die Natural Profiler-Ressourcendatei angelegt wurde. |
| Resource size | Bytes | Die Größe der Natural Profiler-Ressourcendatei. Umfasst die Ressourcen-Headers, die Ereignisdaten und die Statistikdaten. Die Ressourcengröße wird unabhängig davon berechnet, ob die Ressource angelegt wird oder nicht. |
| Resource block size | Bytes | Die maximale Größe eines Ressourcenblocks. Ein Ressourcenblock besteht aus einem Ressourcenblock-Header und einem Datenblock. |
| Resource version | Die Version des Natural Profiler-Ressourcen-Layouts. |
Statistiken der Profiler-Monitor-Session anzeigen.
| Eigenschaft | Einheit | Beschreibung |
|---|---|---|
| Monitor start time | yyyy-mm-dd hh:ii:ss.t | Datum und Uhrzeit des Starts der Monitor-Session. |
| Monitor end time | yyyy-mm-dd hh:ii:ss.t | Datum und Uhrzeit des Endes der Monitor-Session. |
| Monitor elapsed time | sec | Die gesamte verstrichene Zeit, die von der Monitor-Session verbraucht wurde. |
Statistikdaten der Profiler-Trace-Session anzeigen. Die Profiler-Trace-Session beinhaltet auch die Anwendungsausführung.
| Eigenschaft | Einheit | Beschreibung |
|---|---|---|
| First library | Die erste Library, die überwacht wurde. Die Libraries
SYSTEM, SYSLIB* und SYSPRF* werden
ignoriert.
|
|
| First program | Das erste Programm, das überwacht wurde. | |
| Highest level | Höchste Ebene der überwachten Natural-Objekte. | |
| Trace start time | hh:ii:ss.microsec | Die Startzeit der Ablaufverfolgung. Bei NaturalONE ist dies die Zeit des
SI-Ereignisses (Session Initialization). Im Batch-Modus ist die
Sitzung bereits initialisiert, wenn die Überwachung gestartet wird. Daher ist
die Startzeit die Zeit des ersten Ereignisses (normalerweise ein
Monitor-Pause-Ereignis).
|
| Trace end time | hh:ii:ss.microsec | Die Endezeit der Ablaufverfolgung. Dies ist im Allgemeinen die Zeit des
ST-Ereignisses (Session Termination).
|
| Trace elapsed time | sec | Die verstrichene Zeit, die von der Trace-Session von der Startzeit bis zur Endezeit verbraucht wird. |
| Application CPU time | ms | Die gesamte CPU-Zeit, die von der Anwendung verbraucht wird. |
| Monitor CPU time | ms | Die gesamte CPU-Zeit, die der Natural Data Collector verbraucht. Diese Zeit wird bei einem Natural-Linux- oder Windows-Server nicht erfasst. |
| Total CPU time | ms | Die gesamte CPU-Zeit, die von der Trace-Session verbraucht wird. Es ist die Summe der CPU-Zeit der Anwendung und der CPU-Zeit des Monitors. |
| Sampling interval | microsec | Die Stichprobenintervallzeit (CPU-Zeit in Mikrosekunden). Der Wert Null
(0) bedeutet, dass keine Stichprobennahme aktiv war.
|
| Data pool empty | Die Anzahl der Profiler-Leseanforderungen, die den Profiler-Daten-Pool leer (und eine Session aktiv) vorfanden. | |
| Data pool empty after full | Die Anzahl der Profiler-Leseanforderungen, die den Profiler-Daten-Pool
leer vorfanden, obwohl er zuvor voll war. Wenn dieser Zähler größer als
0 ist, ist der Profiler-Daten-Pool zu klein, was zu einer
schlechten Performance führt.
|
|
| Data pool overflow | Die Anzahl der Profiler-Daten-Pool-Überläufe (mit verlorenen Daten). Daten-Pool-Überläufe sollten nicht mehr auftreten. Diesen Wert gibt es nur noch aus Gründen der Abwärtskompatibilität mit früheren Versionen von Natural. | |
| No session active | Die Anzahl der Leseanforderungen, bei denen der Profiler-Daten-Pool leer und keine Trace-Session aktiv war. Dies kann nur bei Profiler-Leseanforderungen geschehen, die vor der Session-Initialisierung oder nach Beendigung der Session eingereicht wurden. |
Statistiken über die Datenverarbeitung, Komprimierung und Übertragung anzeigen.
| Eigenschaft | Einheit | Beschreibung |
|---|---|---|
| Number of events | Die Gesamtzahl der Ereignisse. | |
| Highest event number | Die höchste Ereigniszahl, wie sie vom Natural Data Collector angegeben wurde. Beachten Sie, dass der Natural Data Collector nur Nicht-Statement-Ereignisse zählt, wenn er von NaturalONE aufgerufen wird. Im Batch-Modus hängt es vom Statement-Filter ab, ob Statement-Ereignisse gezählt werden oder nicht. | |
| Number of data blocks | Die Anzahl der Ereignisdatenblöcke, die an NaturalONE gesendet oder in die Ressource geschrieben werden. | |
| Utility buffer size | Bytes | Die Größe des Utility-Puffers, der für die Datenübertragung vom Server zu NaturalONE verwendet wird. Im Allgemeinen enthält der Puffer die Header-Informationen und funktionsspezifischen Daten. |
| Data block size | Bytes | Die maximale Menge an Ereignisdaten, die in einem Aufruf vom Server zu NaturalONE übertragen werden kann. Die gleiche Datenblockgröße wird zum Speichern der Ereignisdaten in der Ressourcendatei verwendet. |
| RDC data length | Bytes | Die Gesamtgröße der vom Natural Data Collector erhaltenen Daten. |
| Uncompressed data length | Bytes | Die Gesamtgröße der Profiler-Daten im unkomprimierten Format. |
| Compressed data length | Bytes | Die Gesamtgröße der komprimierten Daten, die an NaturalONE gesendet oder in die Profiler-Ressourcendatei geschrieben werden. |
| Identical bytes trimmed left | Die Anzahl der identischen Bytes, die bei der Vorwärtsdatenkomprimierung links abgeschnitten wurden. | |
| Blanks trimmed right | Die Anzahl der Leerzeichen, die bei der rückwärts gerichteten Datenkomprimierung rechts abgeschnitten wurden. | |
| Compression header length | Bytes | Die Gesamtgröße der Komprimierungs-Header, die mit jedem komprimierten Ereignisdatensatz gespeichert werden. |
| Compression rate | Prozent | Der Prozentsatz der Datenreduktion durch die Komprimierung. Je höher die Komprimierungsrate, desto weniger Daten müssen übertragen oder gespeichert werden. Die Formel der Komprimierungsrate wird unten beschrieben. |
| Events/block | Die durchschnittliche Anzahl der Ereignisse, die in einem Ereignisdatenblock enthalten sind. | |
| Bytes/event | Die durchschnittliche Länge eines komprimierten Ereignisdatensatzes in Bytes. Diese Eigenschaft ist nicht für konsolidierte oder Abdeckungsdaten verfügbar. |
Die Komprimierungsrate wird mittels folgender Formel berechnet:
CompressionRate := 100 × |
|
Statistiken der Ereignistypen anzeigen.
| Eigenschaft | Beschreibung |
|---|---|
| Unknown event | Die Anzahl der unbekannten Ereignisse. |
| Session initialization | Die Anzahl der Session-Initialisierungsereignisse. |
| Session termination | Die Anzahl der Session-Beendigungsereignisse. |
| Program load | Die Anzahl der Programmlade-Ereignisse. |
| Program start | Die Anzahl der Programmstart-Ereignisse. |
| Program termination | Die Anzahl der Programmbeendigungsereignisse. |
| Program resume | Die Anzahl der Programmwiederaufnahme-Ereignisse. |
| Program information | Die Anzahl der Programm-Informationsereignisse. |
| Before database call | Die Anzahl der Vor-Datenbankaufruf-Ereignisse. |
| After database call | Die Anzahl der Nach-Datenbankaufruf-Ereignisse. |
| Before terminal I/O | Die Anzahl der Vor-Terminal-E/A-Ereignisse. |
| After terminal I/O | Die Anzahl der Nach-Terminal-E/A-Ereignisse. |
| Before external program call | Die Anzahl der Vor-Externem-Programmaufruf-Ereignisse. |
| After external program call | Die Anzahl der Nach-Externem-Programmaufruf-Ereignisse. |
| Runtime error | Die Anzahl der Laufzeitfehler-Ereignisse. |
| Natural statement | Die Anzahl der Natural Statement-Ereignisse. Aus technischen Gründen können mehrere Natural-Statements zu einem Statement-Ereignis zusammengeführt werden, und umgekehrt kann ein Natural-Statement mehrere Statement-Ereignisse abdecken. |
| Outbound RPC message | Die Anzahl der ausgehenden RPC-Nachrichtenereignisse. |
| Inbound RPC message | Die Anzahl der eingehenden RPC-Nachrichtenereignisse. |
| Start RPC request execution | Die Anzahl der RPC-Ausführungsanforderungsstart-Ereignisse. |
| RPC Wait for Client | Die Anzahl der RPC-Wartet-auf-Client-Ereignisse. |
| User trace call | Die Anzahl der benutzerdefinierten Ereignisse. |
| Monitor pause | Die Anzahl der Monitor-Pause-Ereignisse. |
| Monitor filter | Die Anzahl der Monitor-Filter-Ereignisse. Filter-Ereignisse werden nicht aufgezeichnet. |
Statistiken der Monitor-Pausentypen-Ereignissen anzeigen.
| Eigenschaft | Beschreibung |
|---|---|
| Pause - unknown type | Die Anzahl der Monitor-Pause-Ereignisse mit unbekanntem Pausentyp. |
| Pause - requested | Die Anzahl der angeforderten Monitor-Pause-Ereignisse. |
| Pause - start of block filter | Die Anzahl der Monitor-Pause-Ereignisse, die durch den Start eines Blockfilters verursacht werden (Library-, Programm-, Zeilen-, FNAT-, Ereignisanzahl- oder Zeit-Filter). |
| Pause - data pool full | Die Anzahl der Monitor-Pause-Ereignisse, die durch einen vollen Daten-Pool verursacht werden. |
| Pause - data pool overflow | Die Anzahl der Monitor-Pause-Ereignisse, die durch einen Daten-Pool-Überlauf verursacht werden. |
Statistiken der Datenkonsolidierung anzeigen.
| Eigenschaft | Einheit | Beschreibung |
|---|---|---|
| Consolidation |
Gibt an, ob die Profiler-Daten konsolidiert sind
( |
|
| Consolidation records | Die Gesamtzahl der Konsolidierungsdatensätze. Im Allgemeinen umfasst ein Konsolidierungsdatensatz mehrere Ereignisse. | |
| Consolidation elapsed time | Sekunden | Die verstrichene Zeit in Sekunden, die für die
Datenkonsolidierung mit der Profiler Utility-Funktion CONSOLIDATE
erforderlich ist.
Dieser Wert wird nicht angegeben, wenn die Konsolidierung
während der Datensammlung durchgeführt wird (Profiler Utility-Funktion
|
| Consolidation factor | Die durchschnittliche Anzahl der Ereignisse, die zu einem
Konsolidierungsdatensatz zusammengefasst sind. Je höher der
Konsolidierungsfaktor, desto besser die Konsolidierung.
ConsolidationFactor := NumberOfEvents / ConsolidationRecords |
|
| Consolidation records/block | Die durchschnittliche Anzahl der Konsolidierungsdatensätze, die in einem Datenblock enthalten sind. | |
| Bytes/consolidation record | Die durchschnittliche Länge in Bytes eines komprimierten Konsolidierungsdatensatzes. | |
| Consolidate I/O time | Gibt an, ob die E/A- und Natural RPC-Client-Zeit in den konsolidierten Daten enthalten sind. |
Statistiken zur Natural-Codeabdeckung anzeigen.
Anmerkung
Statistikdaten zur Natural-Codeabdeckung werden nur auf dem Großrechner
gesammelt.
| Eigenschaft | Beschreibung |
|---|---|
| Coverage | Zeigt an, ob die Natural-Codeabdeckung durchgeführt
wird(ON/OFF).
|
| Missed statements recorded | Zeigt an, ob nicht abgedeckte ("missed")
Statements aufgezeichnet werden (ON/OFF).
|
| Coverage records | Die Gesamtzahl der Abdeckungsdatensätze. Dies sind Programminformationen und Natural-Statement-Aufzeichnungen. |
| Program information records | Die Anzahl der in die Ressourcendatei geschriebenen Programminformationsdatensätze. Jeder Programminformationsdatensatz enthält programm- und copycode-bezogene Informationen. |
| Coverage records/block | Die durchschnittliche Anzahl der Abdeckungsdatensätze, die in einem Datenblock enthalten sind. |
| Bytes/coverage record | Die durchschnittliche Länge in Bytes eines komprimierten Abdeckungsdatensatzes. |
| Programs covered | Die Anzahl der abgedeckten Programme. |
| Programs NOC-ed | Die Anzahl der abgedeckten Programme, die mit dem Natural Optimizer Compiler kompiliert wurden. |
| Statement coverage | Der Prozentsatz der Statements aller aufgerufenen Programme, die von der Anwendung abgedeckt wurden. |
| Statements covered | Die Anzahl der abgedeckten (ausgeführten) Statements. |
| Statements total | Die Gesamtzahl der ausführbaren Statements aller Programme, auf die zugegriffen wird. |
Statistikdaten der ausgeführten Transaktionen anzeigen.
Anmerkung
Transaktionsstatistikdaten sind nur verfügbar, wenn Profiler-Daten mit der auf
TRANSACTION=ON gesetzten CONSOLIDATE-Funktion konsolidiert
wurden.
| Eigenschaft | Einheit | Beschreibung |
|---|---|---|
| Transaction | Gibt an, ob Transaktionsidentifikatoren zu den
konsolidierten Datensätzen hinzugefügt werden
(ON/OFF).
Transaktionsidentifikatoren sind erforderlich, um die Antwortzeit für Transaktionen auszuwerten. |
|
| Number of transactions | Die Gesamtzahl der verarbeiteten Transaktionen.
Eine Transaktion ist der Code, der zwischen zwei aufeinanderfolgenden Terminal-E/A-Vorgängen ausgeführt wird. |
|
| Total response time | Sekunden | Die gesamte verstrichene (elapsed) Zeit, die für die Verarbeitung aller Transaktionen aufgewendet wurde. |
| Average response time | Sekunden | Die durchschnittlich aufgewendete verstrichene (elapsed) Zeit pro Transaktion. |
| Max response time | Sekunden | Die maximale (höchste) verstrichene (elapsed) Zeit, die für die Verarbeitung von Transaktionen aufgewendet wird. |
| ID max response time | Der Transaktionsidentifikator der Transaktion mit der
höchsten verstrichenen (elapsed) Zeit.
Zusätzlich zum Transaktionsidentifikator gibt die Statistik den Programmnamen, den Copycode-Namen (falls vorhanden) und die Programmzeile an, von der aus der Terminal-E/A-Vorgang ausgegeben wurde. |
Weitere Informationen zur Auswertung von Transaktionen finden Sie unter Transaktionszusammenfassung.