Grundlegendes Konzept der Profiler Utility

Die Profiler-Utility ist für interaktive (Online-) und Batch-Natural-Anwendungen verfügbar. Interaktive Natural-Anwendungen können auch von NaturalONE profiliert werden, was in der NaturalONE-Dokumentation detailliert beschrieben wird.

Dieses Dokument behandelt die folgenden Themen:


Profiler Utility - Übersicht

graphics/profiler_utility_overview.png

Die Grafik veranschaulicht den Prozessablauf, wenn die Profiler Utility im Online- oder im Batch-Modus Daten verfolgt (Profiler-Tracing).

Die Profiler-Utility basiert, wie in der Grafik dargestellt, auf der Natural Data Collector-Technik. Wenn in einer Natural-Großrechner-Anwendung ein Ereignis wie z. B. ein Programmstart auftritt, ruft der Natural-Nukleus den Natural Data Collector der SYSRDC Utility auf, der die Natural-Ereignisdaten im Natural Data Collector Buffer sammelt und die Ereignisdaten an die User-Exits des Natural Data Collector weitergibt. Die Art und Weise, wie die Ereignisdaten weiterverarbeitet werden, hängt davon ab, in welchem Modus Sie die Profiler Utility ausführen.

Die Grafik wird im folgenden Abschnitt erläutert:

Profiler Utility im Online-Modus

Die Profiler Utility im Online-Modus ist menübasiert. Sie dient dazu, einen schnellen Überblick über die letzten Aktionen einer interaktiven Natural-Anwendung zu erhalten.

  • Der Natural Data Collector-Pufferspeicher (Natural Data Collector Buffer) hat eine maximale Größe von 128 KB und arbeitet im Wrap-around-Modus. Er liefert die jüngsten Ereignisse, während die ältesten Daten überschrieben werden, wenn der Puffer voll ist. Die Datensammlung wird gestoppt, wenn die Daten gelesen werden, und der Puffer wird geleert, wenn die Sammlung neu gestartet wird.

  • Die Profiler-Online-Komponente (Profiler Online Component) liest die Ereignisdaten aus dem Natural Data Collector Buffer. Sie bietet Funktionen zur Steuerung des Profiler-Tracing, zur Auswahl der gewünschten Ereignistypen, zur Pflege und Anzeige von Trace-Datensätzen, zum Herunterladen der Ereignisdaten auf den PC und zum Speichern der Ereignisdaten als Profiler-Ressourcendatei. Die Profiler-Ressourcendatei kann entweder mit den Profiler-Batch-Datenverarbeitungsfunktionen, NaturalONE oder der Profiler Rich GUI-Schnittstelle verarbeitet werden.

Profiler Utility im Batch-Modus

Die Profiler-Utility im Batch-Modus wird durch JCL-Eingabe gesteuert. Sie wurde für die Analyse von Natural-Batch-Anwendungen entwickelt.

  • Der User Exit NATRDC1 des Natural Data Collector sammelt die Natural-Ereignisdaten im Profiler-Daten-Pool. Er erweitert den Natural Data Collector-Ereignisdatensatz um zusätzliche Ereignisinformationen und führt spezielle Funktionen wie Filtern oder Sampling (Stichprobentechnik) aus.

  • Der Profiler-Daten-Pool (Profiler Data Pool) hat eine maximale Größe von 2 GB und sammelt die Natural-Ereignisdaten für die Profiler Utility im Batch-Modus und für den NaturalONE Profiler. Eine spezielle Logik sorgt dafür, dass keine Daten verloren gehen, auch wenn der Pool voll ist.

  • Die Profiler-Batch-Datensammlung (Profiler Batch Data Collection) liest die Ereignisdaten asynchron aus dem Profiler-Daten-Pool, während die Anwendung und die Ablaufverfolgung (Tracing) weiterlaufen. Sie bietet Funktionen zur Steuerung des Profiler-Tracing, zur Auswahl erforderlicher Ereignistypen, zum Filtern, Entnehmen von Stichproben (Sampling) oder Konsolidieren der Daten, zum Messen der Natural-Codeabdeckung und zum Schreiben der resultierenden Ereignisse in eine Profiler-Ressourcendatei. Allgemeine Statistiken und ein Ereignis-Trace mit den wichtigsten Daten können in die Standardausgabe geschrieben werden.

  • Die Profiler-Ressourcendatei (Profiler Resource File) hat die Namenserweiterung .nprf, .nprc oder .ncvf und ist eine Ressource, die abhängig von der Ressource-Library-Auswahl in der Natural-Systemdatei FNAT oder FUSER zugeordnet wird. Sie enthält die Ereignisdaten in komprimiertem Format mit einem um bis zu 80 % verringerten Speicherbedarf. Für eine optimierte Übertragung nach NaturalONE werden die Daten in Datenblöcken zusammengefasst.

  • Während der Profiler-Batch-Datenverarbeitung (Batch Data Processing) liest und verarbeitet der Profiler die Ereignisdaten aus den Profiler-Ressourcendateien. Dabei stehen Funktionen für Datenkonsolidierung (Aggregation), Ereignis-Tracing und Programm-Tracing zur Verfügung. Der Profiler bietet außerdem eine Programmzusammenfassung, eine Zeilenzusammenfassung und eine Transaktionszusammenfassung und zeigt Profiler-Eigenschaften und -Statistiken an. Für die Natural-Codeabdeckungsdaten werden Programm- und Statement-Abdeckungsreports bereitgestellt. Die resultierenden Daten können in eine Datei im Text- oder CSV-Format (kommagetrennte Werte) exportiert werden.

  • In der Natural Server-Ansicht von NaturalONE werden die Profiler-Ressourcendateien als NPRF- oder NPRC-Ressourcen aufgelistet. Die Kontextmenüfunktion Open with Natural Profiler liest die Ressourcendaten in den NaturalONE Profiler. Der NaturalONE Profiler bietet die allgemeine Analyse der Ereignisdaten. Sie zeigt, wie sich die CPU-Zeit oder die verstrichene (elapsed) Zeit auf die Programme, Statements und sogar Programmzeilen der Anwendung verteilt und wie oft ein Statement ausgeführt wurde. Zusätzlich wird der vollständige Ereignis-Trace bereitgestellt.

  • Codeabdeckungs-Ressourcedateien (Coverage Resource Files, NCVF) können aus der NaturalONE Server-Ansicht zu einem Projekt im NaturalONE-Arbeitsbereich hinzugefügt werden. Die Kontextmenüfunktion Open with Natural Code Coverage liest die Ressourcendaten und zeigt sie in der Code Coverage-Ansicht an.

    Von der NaturalONE Code Coverage-Ansicht aus kann der Natural Source Editor geöffnet werden. Er zeigt alle Quellcodezeilen mit einem oder mehreren abgedeckten Statements mit grünem Hintergrund.

  • Über die NaturalONE Tools and Utilities kann die Profiler Rich GUI-Schnittstelle gestartet werden. Sie listet alle Profiler-Ressourcen der gegebenen Library auf. Für eine ausgewählte Profiler-Ressource werden die Eigenschaften und Statistiken der Profil-Erstellung angezeigt. Das Tool bietet Funktionen zur Datenkonsolidierung und -auswertung, zur Analyse überwachter Programme oder zum Löschen einer Profiler-Ressourcendatei. Für die Auswertung werden Kreisdiagramme verwendet, um die Verteilung der Profiler-Leistungskennzahlen (KPIs, Key Performance Indicators) für ausgewählte Kriterien wie die Verteilung der CPU-Zeit für Programme anzuzeigen. Zusammengefasste Summen der KPI-Werte werden ebenfalls angezeigt. Für die Programmanalyse wird der Quellcode der überwachten Programme mit den Profiler-Daten kombiniert, wobei der Quellcode entsprechend dem Wert des ausgewählten KPI farblich hinterlegt wird.

Datensammlung (Data Collection) im Batch-Modus

graphics/profiler_functions_batch.png

Diese Grafik zeigt, welche Aktionen die Profiler Utility bei der Profil-Erstellung einer Natural-Anwendung im Batch-Modus ausführt.

  • Die Natural-Trace-Session ist die Sitzung, in der die Natural Batch-Anwendung ausgeführt und die Profiler-Trace-Daten generiert und gesammelt werden.

  • Wenn die Funktion INIT der Profiler Utility ausgeführt wird, wird eine neue Natural-Session als asynchroner Subtask gestartet. Diese Session wird als Monitor-Session bezeichnet, weil sie die Ereignisse überwacht. In beiden Sessions läuft eine Natural-Nukleus-Instanz mit einem verlinkten NATRDC1-Exit. Die INIT-Funktion löst die Ausführung der Profiler Utility in der Monitor-Session aus und leitet die INIT-spezifischen Schlüsselwörter an sie weiter.

    In der Monitor-Session wird die Profiler-Ressourcendatei erstellt, in der die Ereignisse später gespeichert werden. Dann wird der Exit NATRDC1 aufgerufen, um die Monitor-Session zu initialisieren. NATRDC1 ordnet den Profiler-Daten-Pool zu, der verwendet wird, um die Ereignisdaten von der Trace-Session in die Monitor-Session zu übertragen. Er initialisiert auch die Entnahme von Stichproben (Sampling) und legt Standardwerte für Filter fest.

  • Wenn der Profiler in der Trace-Session feststellt, dass die Monitor-Session erfolgreich initialisiert wurde, ruft er den NATRDC1-Exit auf, um die Trace-Session zu initialisieren. Standardmäßig wird die Datensammlung nach der Initialisierung angehalten.

  • Nach der Initialisierung können die Profiler-Filter eingestellt werden. Dies sollte durchgeführt werden, bevor die Datensammlung gestartet wird, damit die Filter gleich zu Beginn einsatzbereit sind.

  • Die Datensammlung beginnt mit der START-Funktion. Der Profiler in der Trace-Session sendet eine Startanforderung an den Exit NATRDC1, der die Ereignisse der nachfolgenden Natural-Anwendungen im Profiler-Daten-Pool sammelt. Gleichzeitig ruft der Profiler in der Monitor-Session den Exit NATRDC1 auf, um die Ereignisdaten aus dem Profiler-Daten-Pool zu lesen. Der Speicherplatz der Ereignisdaten wird sofort freigegeben, so dass die Trace-Session ihn wiederverwenden kann. Der Profiler in der Monitor-Session komprimiert die Ereignisdaten und schreibt sie in die Profiler-Ressourcendatei.

  • Mit der PAUSE-Funktion kann die Datensammlung angehalten werden. Der Profiler sendet in der Trace-Session eine Pausenanforderung an den Exit NATRDC1, der ein MP-Ereignis (Monitor Pause) in den Profiler-Daten-Pool schreibt und die Datensammlung aussetzt, d.h. er lehnt alle Ereignisse ab, bis eine Startanforderung empfangen wird oder die Trace-Session endet.

  • Am Ende der Anwendung wird ein ST-Ereignis (Session Termination) in den Profiler-Daten-Pool geschrieben. Die Trace-Session wird jedoch nicht sofort beendet (was den Subtask der Monitor-Session abbrechen würde). Stattdessen wartet sie, bis die Monitor-Session die verbleibenden Daten aus dem Profiler-Daten-Pool liest. Wenn der Profiler in der Monitor-Session das ST-Ereignis im Profiler-Daten-Pool findet, schließt er die Profiler-Ressourcendatei, schreibt die Statistikdaten und sendet eine Beendigungsanforderung an den Exit NATRDC1, der die Monitor-Session beendet. Zuletzt wird auch die Trace-Session beendet.

Datenkonsolidierung, Codeabdeckung und Datenverarbeitung

Bei der Profiler Utility werden Techniken verwendet, die mit dem NaturalONE Profiler eingeführt wurden, wie z. B. der User Exit NATRDC1 und der Profiler-Daten-Pool. Daher ist die Verarbeitung der Ereignisdaten auf NaturalONE-Benutzer beschränkt, die den NaturalONE Profiler und die Profiler Utility zur Auswertung der Ereignisdaten verwenden können. Die Datenkonsolidierungs- und Verarbeitungsfunktionen der Profiler Utility (CONSOLIDATE, READ, LIST und DELETE) müssen aktiviert werden, bevor sie verwendet werden können. Die Aktivierung ist unter Voraussetzungen beschrieben.

Dieser Abschnitt behandelt die folgenden Themen:

Datenkonsolidierung

Wenn eine Natural-Anwendung profiliert wird, sammelt der Natural Profiler für jedes Ereignis einen Datensatz. Je nach Anwendung kann dies riesige Datenmengen erzeugen, insbesondere wenn Natural-Statements überwacht werden. Je mehr Daten der Profiler generiert, desto mehr Zeit wird benötigt, um die Daten vom Server zum NaturalONE-Client zu transportieren.

Die Profiler Utility und die Profiler Rich GUI-Schnittstelle bieten eine serverseitige Datenkonsolidierung, die die Datenmenge erheblich reduziert und gleichzeitig den Transportfluss erhöht. Die Profiler-Datenkonsolidierung kombiniert ähnliche Datensätze in einem konsolidierten Datensatz mit aggregierten Zeitwerten und einem Trefferzähler. Die konsolidierten Daten werden in eine Ressourcendatei geschrieben, die den gleichen Namen wie die entsprechende nicht konsolidierte Ressourcendatei hat, aber die Erweiterung .nprc (Natural Profiler resource consolidated).

Während der Profil-Erstellung können die Daten sofort konsolidiert werden, indem das Schlüsselwort CONSOLIDATE der INIT-Funktion der Profiler Utility aktiviert wird. Nicht konsolidierte Daten einer NPRF-Datei können später mit der Profiler Utility oder der Profiler Rich GUI-Schnittstelle CONSOLIDATE-Funktion konsolidiert werden.

Beispiel:

Ein Natural-Statement wird 1000 Mal in einer FOR-Schleife ausgeführt. Die nicht konsolidierten Daten enthalten 1000 Datensätze für jede Ausführung des Statement. Jeder Datensatz enthält neben anderen Informationen die Ereigniszeit und den CPU-Zeitstempel. Die Profiler-Konsolidierung fasst diese 1000 Datensätze zu einem konsolidierten Datensatz zusammen. Alle gemeinsamen Informationen (z.B. die Library oder der Programmname) werden beibehalten, die verstrichene (elapsed) Zeit und die CPU-Zeit jeder Ausführung des Statement werden bestimmt, zusammengefasst und im Konsolidierungsdatensatz gespeichert. Darüber hinaus wird eine Trefferzahl von 1000 aufgezeichnet.

Anmerkungen:

  1. Eine NPRC-Ressourcendatei, die serverseitig konsolidiert wurde, enthält die gleichen Hot-Spot-Werte wie die entsprechende nicht konsolidierte NPRF-Ressource, wird aber mit NaturalONE viel schneller geöffnet.
  2. Die konsolidierten Daten enthalten nicht den Ereignis-Trace (Zeitstempel). Daher ist es nicht möglich, die Ereignisverfolgung anzuzeigen, wenn man eine NPRC-Ressource in NaturalONE öffnet.
  3. Die Datenkonsolidierung ist eine Voraussetzung, wenn man die Ereignisdaten über die Profiler Rich GUI-Schnittstelle auswerten möchte.

Natural-Codeabdeckung (Code Coverage)

Die Natural-Codeabdeckung wird verwendet, um ausgeführte und nicht ausgeführte Statements einer Natural-Anwendung zu überwachen. Sie wird durch Einschalten des Schlüsselworts COVERAGE der INIT-Funktion der Profiler Utility gestartet.

Für die Codeabdeckung verwendet der Profiler automatisch einen Ereignisfilter, so dass nur die Ereignisse "Programmstart" (PS) und "Natural Statement" (NS) gesammelt werden. Darüber hinaus enthalten die Statement-Ereignisse in diesem Fall einen GP-Offset, der benötigt wird, um das Statement eindeutig zu identifizieren.

Für jedes aufgerufene Programm wird das entsprechende katalogisierte Programm (GP = Generated Program) gelesen und die Statement-Tabelle gebaut, die die Zeilennummer, den GP-Offset, den Objektcode und die Copycode-Informationen des Statement enthält. Darüber hinaus wird eine invertierte Liste von GP-Offsets für die schnelle Suche nach dem Offset erstellt.

Während die Anwendung läuft, wird der GP-Offset zu jedem ausgeführten Statement in der Statement-Tabelle gesucht und als abgedeckt markiert. Schließlich werden die abgedeckten Statements und die nicht abgedeckten Statements (die nicht markiert worden sind) in eine Natural-NCVF-Ressourcendatei geschrieben.

Wenn die NCVF-Abdeckungsressourcendatei mit der Profiler READ-Funktion analysiert wird, wird der Quellcode der überwachten Programme gelesen und die Zeilen werden entsprechend der Abdeckung der Statements in der Zeile markiert.

Anmerkung:
Die Natural-Codeabdeckung ist nicht für Programme vorgesehen, die mit dem Natural Optimizer Compiler (NOC) katalogisiert wurden.

Datenverarbeitung

Die folgende Grafik zeigt, wie die Profiler Utility nicht konsolidierte und konsolidierte Daten verarbeitet:

graphics/profiler-data-processing.png

Die Grafik wird im folgenden Abschnitt erläutert:

  • Wenn eine Großrechner-Natural-Batch-Anwendung mit der Datensammlung der Profiler Utility profiliert wird, werden die resultierenden Ereignisdaten, abhängig von der Einstellung des CONSOLIDATE-Schlüsselworts der INIT-Funktion der Profiler Utility, in eine Natural Profiler-Ressourcendatei (NPRF) oder eine konsolidierte Natural Profiler-Ressourcendatei (NPRC) geschrieben.

  • Die Natural Profiler-Ressourcendatei (Erweiterung .nprf) enthält die Ereignisdaten in einem nicht konsolidierten Format, was bedeutet, dass es für jedes Ereignis einen Datensatz gibt.

  • Die READ-Funktion der Profiler Utility liest die Ereignisdaten aus der NPRF-Ressourcendatei. Sie bietet ein Ereignis-Trace, ein Programm-Trace und die Profiler-Statistiken. Die resultierenden Daten können in eine Datei im Text- oder CSV-Format (kommagetrennte Werte) exportiert werden.

  • Wenn die NPRF-Ressourcendatei von NaturalONE aus geöffnet wird, werden die nicht konsolidierten Ereignisdaten auf der NaturalONE Event Trace-Seite aufgelistet.

  • Die NaturalONE Hot Spots-Seite zeigt die Ereignisdaten in konsolidierter Form an. Wenn die Daten aus einer NPRF-Ressourcendatei stammen, konsolidiert NaturalONE die Daten intern.

  • Die CONSOLIDATE-Funktion der Profiler Utility und die Profiler Rich GUI-Schnittstelle liest die Ereignisdaten aus der NPRF-Ressourcendatei, konsolidiert sie und schreibt sie in eine NPRC-Ressourcendatei.

  • Die konsolidierte Natural Profiler-Ressourcendatei (Erweiterung .nprc) enthält die Ereignisdaten in einem konsolidierten Format, was bedeutet, dass ähnliche Datensätze in einem konsolidierten Datensatz aggregiert werden. Im Allgemeinen ist eine NPRC-Ressourcendatei viel kleiner als die entsprechende NPRF-Ressourcendatei und daher viel schneller zu verarbeiten.

  • Wenn die NPRC-Ressourcendatei von NaturalONE aus geöffnet wird, werden die konsolidierten Ereignisdaten auf der Hot Spots-Seite angezeigt. Es ist nicht möglich, das Ereignis-Trace anzuzeigen, da die NPRC-Ressourcendatei nicht die Daten jedes einzelnen Ereignisses enthält.

  • Die READ-Funktion der Profiler-Utility liest die Ereignisdaten aus der NPRC-Ressourcendatei. Sie liefert ein Trace der konsolidierten Datensätze, eine Programmzusammenfassung, eine Zeilenzusammenfassung, eine Transaktionszusammenfassung und Profiler-Statistikdaten. Die resultierenden Daten können in eine Datei im Text- oder CSV-Format (kommagetrennte Werte) exportiert werden.

  • Die Profiler Rich GUI-Schnittstelle (gestartet mit NaturalONE Tools and Utilities) visualisiert die Profiler-Ereignisdaten und Statistiken in einer grafischen, interaktiven Browser-Oberfläche.

Stichprobentechnik (Natural Profiler Sampling)

Allgemein werden Profiler in ereignisbasierte oder statistische Profiler eingeteilt. Statistische Profiler, die mittels Stichproben (Sampling) arbeiten, unterbrechen das Betriebssystem in regelmäßigen Abständen, um die Profiling-Daten zu erhalten. Die resultierenden Daten sind nicht genau, sondern eine statistische Annäherung.

Der Natural Profiler ist ein ereignisbasierter Profiler. Er erhält die Kontrolle und sammelt die Profiling-Daten, wenn ein Natural-Ereignis eintritt. Obwohl der Natural Profiler das Betriebssystem nicht unterbricht, bietet er eine Stichprobentechnik, die die gleichen Profilierungsdaten wie statistische Profiler generiert.

Das Natural Profiler Sampling funktioniert wie ein Filter: Es eliminiert alle Ereignisse außer dem letzten in einem Stichprobenintervall. Darüber hinaus ersetzt es den CPU-Zeitstempel des Ereignisses durch die nachfolgende Abtastzeit. Auf diese Weise sammelt der Natural Profiler nur die Ereignisse, die zu Beginn eines Stichprobenintervalls aktiv waren.

graphics/profiler_sampling.png

Bei Verwendung des Natural Profiler Sampling ist Folgendes zu beachten:

  • Die Stichprobentechnik des Natural Profiler Sampling bietet eine gute Schätzung der verbrauchten CPU-Zeit. Es liefert keine anderen Schätzungen wie Trefferzahlen, verstrichene (elapsed) Zeiten und Adabas-Zeiten.

  • Das Natural Profiler Sampling ist ein statistischer Ansatz, der die Anzahl der Ereignisse mit fast den gleichen CPU-Zeitergebnissen stark reduziert.

  • Je kleiner das Stichprobenintervall, desto genauer das Ergebnis.

  • Je größer das Stichprobenintervall, desto weniger Daten werden produziert.

  • Die resultierende Ereignisdauer ist ein Vielfaches des Stichprobenintervalls.

  • Die Stichprobentechnik generiert höchstens einen Datensatz pro Stichprobenintervall.

  • Ereignisse, die mehr Zeit als ein Stichprobenintervall verbraucht haben, benötigen nur einen Datensatz.

  • Das Ereignis der Sitzungsbeendigung (ST, Session Termination) wird unverändert aufgezeichnet.

Wenn die gesamte CPU-Zeit der Anwendung bekannt ist und Stichprobentechnik verwendet wird, kann die Anzahl der Ereignisse geschätzt werden:

Anzahl der Ereignisse ≈

Gesamte CPU-Zeit in Mikrosekunden
Stichprobenintervall

Beispiel:

In der folgenden Beispielanwendung ruft das Programm XPROF drei Subprogramme auf. Die Anwendung wird zweimal profiliert:

  1. Ohne Stichprobennahme.

  2. Mit Stichprobennahme, wobei ein Stichprobenintervall von 100 Mikrosekunden verwendet wird.

Für die Stichprobennahme werden die folgenden Schlüsselwörter mit der INIT-Funktion der Profiler Utility angegeben:

FUNCTION=INIT            /* Initialize Profiling
  SAMPLING=ON            /* Use sampling
  INTERVAL=100           /* Microseconds

Die unten aufgeführten, mit der Natural Profiler Rich GUI-Schnittstelle erzeugten Kreisdiagramme zeigen für jedes Programm den Namen des Programms, die aufgewendete CPU-Zeit (Einheit: Millisekunden) und den CPU-Zeitprozentsatz in Bezug auf die gesamte CPU-Zeit. Das linke Diagramm spiegelt den Lauf ohne Stichprobennahme (Without Sampling) und das rechte Diagramm den Lauf mit Stichprobennahme (Sampling) wider. Obwohl das Sampling die Anzahl der Ereignisse von 240.086 auf 4.664 reduzierte, sind die resultierende CPU-Zeit und -verteilung fast gleich.

graphics/profiler-sampling.png

Profiler-Performance im Batch-Modus

Das Profilieren einer Anwendung wirkt sich in der Regel auf die Performance (Laufzeitverhalten) der Anwendung aus. Die Auswirkungen können die Messung und die Gesamtdauer des Jobs betreffen. Im Natural Profiler sind mehrere Funktionen implementiert, um die Messung so genau und den Performance-Verlust so gering wie möglich zu halten.

  • Die Profiler-Monitor-Session, die die Daten aus dem Profiler-Daten-Pool liest und in die Profiler-Ressourcendatei schreibt, läuft als asynchroner Task. Die für die Monitor-Session aufgewendete Zeit wird daher bei der Anwendungszeitmessung nicht berücksichtigt. Da die Profiler-Trace-Session jedoch am Ende warten muss, bis die Monitor-Session beendet ist, kann sie sich auf die Gesamtdauer des Jobs auswirken.

  • Der NATRDC1-Exit, der in der Profiler-Trace-Session läuft, misst die für das Zusammenstellen des Trace-Datensatzes benötigte CPU-Zeit separat und subtrahiert sie von der CPU-Zeit der Session.

  • Wenn Natural-Statement-Ereignisse mit der Ereignisfiltereinstellung STATEMENT=ON gesammelt werden, deaktiviert der Profiler die Generierung von Statement-Ereignissen im Natural-Nukleus, solange ein Blockfilter (Library, Programm, Zeile, FNAT, Ereignisanzahl oder Zeitfilter) aktiv ist. Dies reduziert die Belastung des Natural-Nukleus, des SYSRDC Data Collector und schließlich des Exit NATRDC1, der andernfalls das Ereignis ablehnen würde.

  • Der Profiler komprimiert die Ereignisdaten, bevor er sie in die Ressource schreibt. Durch die Komprimierung kann bis zu 80 Prozent des Bedarfs an Datenspeicherplatz eingespart werden, was die Anzahl der E/A-Vorgänge drastisch reduziert. Die Ereignisdaten werden auch von NaturalONE im komprimierten Format gelesen, was die Transportflussrate erhöht.

  • Bei der Ausführung auf einem z/OS-Rechner mit zIIP (IBM System z Integrated Information Processor) geht Zeit verloren, wenn die Ausführung vom Allzweckprozessor (GCP, General Central Processor) zum zIIP wechselt und umgekehrt. Wenn Sie Natural for zIIP mit dem Profiler verwenden, läuft der NATRDC1-Exit auf dem zIIP mit einer minimalen Anzahl von Umschaltungen.

Wahl der Profiler-Daten-Poolgröße

Wenn der Profiler-Daten-Pool voll ist, wartet die Profiler-Trace-Session eine Sekunde, damit die Profiler-Monitor-Session etwas Speicherplatz lesen und freigeben kann. Wenn der Daten-Pool zu klein ist, kann es vorkommen, dass die Profiler-Monitor-Session alle Daten liest, bevor die Trace-Session neu gestartet wird. Wenn die Monitor-Session keine Daten im Daten-Pool findet, wartet sie eine Sekunde auf neue Daten. Jetzt warten beide Sitzungen abwechselnd, was die Gesamtdauer des Jobs stark erhöht.

Die Eigenschaft Data pool empty after full (Daten-Pool leer nach voll) in der Kategorie Trace Session der Profiler-Statistik zeigt solche abwechselnden Wartezeiten an. Wenn der Wert dieser Eigenschaft größer als Null (0) ist, müssen Sie den Natural-Profilparameter PDPSIZE auf einen entsprechenden Wert erhöhen.

Beispiel:

PDPSIZE=50000

Langlaufende Anwendungen profilieren

Das Profilieren einer langlaufenden Batch-Anwendung kann eine riesige Datenmenge erzeugen, insbesondere wenn Natural-Statements überwacht werden.

In diesem Abschnitt wird beschrieben, wie Sie die Anzahl der zu überwachenden Ereignisse minimieren und dabei wesentliche Informationen beibehalten können:

Profil-Erstellung starten und pausieren

  • Wenn der Batch-Job mehrere Natural-Anwendungen startet, initialisieren und starten Sie den Profiler unmittelbar vor der ersten Anwendung von Belang. Sobald der Profiler initialisiert ist, wirkt er sich auf die Performance aus, auch wenn keine Ereignisse gesammelt werden.

  • Pausieren Sie den Profiler für Anwendungen, die nicht von Belang sind, und starten Sie ihn für die nächste Anwendung von Belang neu.

  • Verwenden Sie eventuell die Anwendungsprogrammierschnittstelle (API) USR8210N, um die Profil-Erstellung an bestimmten Stellen in der Anwendung zu starten und anzuhalten. Siehe auch Anwendungsprogrammierschnittstelle USR8210N benutzen.

Beispiel:

Ein Job führt drei Natural-Anwendungen aus. Von diesen drei Anwendungen ist nur die zweite für eine Profiler-Analyse von Belang.

Initialisieren und starten Sie die Profil-Erstellung unmittelbar vor Beginn der Ausführung der zweiten Anwendung und pausieren Sie die Profil-Erstellung direkt nach der Ausführung, wie im folgenden Beispiel:

APP-01
PROFILER
FUNCTION=INIT,...         /* Initialize profiling
FUNCTION=START            /* Start data collection
END-PROFILER              /* End Profiler input
APP-02
PROFILER
FUNCTION=PAUSE            /* Pause data collection
END-PROFILER              /* End Profiler input
APP-03
FIN
/*

Auf diese Weise hat die Profil-Erstellung keinen Einfluss auf die Performance der anderen Anwendungen.

Filter einstellen

  • Verwenden Sie den Ereignisfilter FNAT=OFF, um die Überwachung von Natural-Systemprogrammen zu vermeiden, oder geben Sie das Schlüsselwort FNAT überhaupt nicht an.

  • Statement-Ereignisse haben den größten Einfluss auf die Performance und Quantität. Die anderen Ereignisse haben nur einen geringen Einfluss auf die Performance, vergrößern aber die Menge. Überwachen Sie Statement-Ereignisse nur, wenn Sie sie wirklich benötigen. Überwachen Sie von den Nicht-Statement-Ereignissen nur diejenigen, die Sie analysieren möchten.

    Wenn Sie beispielsweise in NaturalONE die Programm-Hot-Spots, aber weder das Statement noch die Zeilen-Hot-Spots anzeigen möchten, ist die folgende Profiler-Ereignisfiltereinstellung ausreichend:

    FILTER=EVENT            /* Set event filter
      EVENT=P               /* Program events

    Mit dieser Einstellung werden nur die Programm- und Session-Ereignisse überwacht, die für die Programm-Hot-Spots benötigt werden, während Statement- und FNAT-Sammlung standardmäßig deaktiviert sind.

  • Überwachen Sie nur die Libraries und Programme, die Sie analysieren möchten. Verwenden Sie den Programmfilter, um die Profil-Erstellung einzuschränken.

    Wenn beispielsweise ein (erster) Profiler ohne Statement-Sammlung gezeigt hat, dass die meiste CPU-Zeit im Programm HIGHCPU verbracht wurde, dann möchten Sie vielleicht nur wissen, in welcher Zeile dieses Programms die meiste Zeit verbracht wurde und welche anderen Ereignisse (Datenbankaufrufe, externe Programmaufrufe usw.) ausgeführt werden:

    FILTER=PROGRAM          /* Set program filter
      LIBRARY=PRFDEMO       /* Monitored library
      PROGRAM=HIGHCPU       /* Monitored program
    FILTER=EVENT            /* Set event filter
      EVENT=ALL             /* All events
      STATEMENT=ON          /* Collect statements (no count)

Stichprobennahme (Sampling) für die CPU-Analyse verwenden

Für die CPU-Analyse einer langlaufenden Anwendung empfehlen wir die Stichprobennahme (Stichprobentechnik (Natural Profiler Sampling)). Wenn Sie bereits Filtereinstellungen verwenden, um die Anzahl der Ereignisse zu reduzieren, können Sie zusätzlich das Sampling aktivieren, um die Anzahl der Ereignisse weiter zu reduzieren.

Die meisten Ereignisdaten werden generiert, wenn Statements gesammelt werden. Daher wird die Stichprobennahme oft in Verbindung mit der Statement-Sammlung verwendet. Für sehr lange laufende Anwendungen kann es jedoch hilfreich sein, Stichproben zu verwenden, auch wenn keine Statements gesammelt werden. Wenn Sie Stichproben ohne Statement-Sammlung verwenden, empfehlen wir ein Stichprobenintervall, das höher ist als das, das bei der Statement-Sammlung angegeben wurde.

Die Stichprobennahme hat nur eingeschränkte Auswirkungen auf die Profiler-Performance, kann aber die Datenmenge drastisch reduzieren. Die Formel im Abschnitt Stichprobentechnik (Natural Profiler Sampling) (Probenahme), die hier neu angeordnet ist, kann verwendet werden, um ein Stichprobenintervall so auszuwählen, dass die Anzahl der Ereignisse gleich oder kleiner als ein Näherungswert ist:

Stichprobenintervall ≥

CPU-Gesamtzeit in Mikrosekunden
Ungefähre Anzahl der Ereignisse

Zum Beispiel benötigt eine Batch-Anwendung 40 Minuten CPU-Zeit (2.400.000.000 μs). Die Stichprobennahme sollte die Anzahl der Ereignisse auf höchstens 500.000 Ereignisse beschränken. Das entsprechende Probenahmeintervall kann mit der obigen Formel berechnet werden.

Stichprobenintervall ≥

2.400,000.000
500.000

= 4.800

Geben Sie die folgende Stichprobeneinstellung bei der INIT-Funktion der Profiler Utility an:

SAMPLING=ON
INTERVAL=4800

Serverseitige Datenkonsolidierung verwenden

Wenn Sie die Performance der Ereignisdaten analysieren möchten und kein Ereignis- oder Programm-Trace benötigen, empfehlen wir Ihnen, die Ereignisdaten serverseitig zu konsolidieren. Die Profiler-Datenkonsolidierung kombiniert ähnliche Datensätze in einem konsolidierten Datensatz mit aggregierten Zeitwerten und einem Trefferzähler.

Die Ereignisdaten können während der Datensammlung mit dem Schlüsselwort CONSOLIDATE in der INIT-Funktion der Profiler-Utility konsolidiert werden, wie im Abschnitt Profil-Erstellung initialisieren beschrieben.

Nicht konsolidierte Ereignisdaten einer NPRF-Ressourcendatei (Natural Profiler Resource File) können mit der CONSOLIDATE-Funktion der Profiler Utility konsolidiert werden, wie im Abschnitt Ereignisdaten konsolidieren beschrieben, oder mit der CONSOLIDATE-Funktion der Natural Profiler Rich GUI-Schnittstelle, wie in der Dokumentation von NaturalONE beschrieben, die unter documentation.softwareag.com verfügbar ist. Siehe Using NaturalONE > Using Natural Tools and Utilities > Rich GUI Interface of the Natural Profiler.

Konsolidierte Daten werden in eine NPRC-Ressourcendatei (Natural Profiler Resource Consolidated) geschrieben, die allgemein deutlich kleiner ist als die entsprechende NPRF-Ressourcendatei. Sie lässt sich viel schneller von NaturalONE aus öffnen und bietet die gleichen Hot-Spots wie die NPRF-Ressourcendatei.

Anmerkung:
Natural-Codeabdeckungsdaten, die in eine NCVF-Ressourcendatei geschrieben werden, werden automatisch durch Natural-Codeabdeckung konsolidiert.

Verwandte Themen

  • Mit dem Profilparameter RDC wird der Natural Data Collector konfiguriert, der von der Profiler Utility und der SYSRDC Utility benutzt wird. Siehe RDC - Konfiguration des Natural Data Collector in der Parameter-Referenz-Dokumentation.

    Die CMRDC-Schnittstelle steuert die im Natural Data Collector-Puffer aufgezeichneten Daten. Siehe Aufruf des CMRDC-Interface im Dokument SYSRDC Utility in der Debugger und Dienstprogramme-Dokumentation.

  • Die Verwendung der Profiler Utility kann von Natural Security kontrolliert werden, siehe Protecting Utilities in der Natural Security-Dokumentation.

  • Die Verwendung des NaturalONE Profilers und der NaturalONE-Codeabdeckung ist in der NaturalONE-Dokumentation beschrieben.

  • Die NaturalONE Tools und Utilities einschließlich der Natural Profiler Rich GUI-Schnittstelle sind in der NaturalONE-Dokumentation beschrieben.