Java-Laufzeitstatistik

Sie können die Umgebungsvariable HJV_JZOS_JVM_SMF_LOGGING JZOS verwenden, um die Protokollierung von SMF-Datensätzen (System Management Facility) zu aktivieren, die Java™ -Laufzeitstatistiken enthalten.

Standardmäßig ist die Protokollierung von Java Runtime-Statistiken inaktiviert. Wenn diese Umgebungsvariable auf truegesetzt ist, registriert das JZOS-Batchstartprogramm einen JVM-Shutdown-Hook, um einen SMF-Datensatz zu protokollieren, der Java-Laufzeitleistungsstatistiken enthält, kurz bevor die JVM beendet wird.

Sie können auch die Umgebungsvariable HJV_JZOS_JVM_SMF_LOGGING_INTERVAL verwenden, um die regelmäßige Protokollierung von SMF-Datensätzen zu aktivieren. Eine weitere Umgebungsvariable namens HJV_JZOS_JVM_SMF_THREADSsteuert, ob Details für einzelne Threads in diesen SMF-Datensätzen enthalten sind. Schließlich steuert die Umgebungsvariable HJV_JZOS_JVM_SMF_THREADS_NATIVE_ID , ob die richtigen Thread-ID-Informationen des nativen Betriebssystems im Abschnitt mit den einzelnen Threaddetails zugewiesen werden. Weitere Informationen zum Konfigurieren dieser JZOS-Umgebungsvariablen finden Sie unter JZOS-Umgebungsvariablen.

Das JZOS-Batchstartprogramm verwendet den SMF-Datensatztyp 121, um Java-Laufzeitleistungsstatistiken aufzuzeichnen. Die Datensatzzuordnungen werden in den folgenden Tabellen angezeigt.

Header/selbstdefinierender Abschnitt

Dieser Abschnitt enthält die allgemeinen Headerfelder des SMF-Datensatzes und die Triplet-Felder (Offset zum Abschnitt, Länge des Abschnitts oder Anzahl der Abschnitte), die die anderen Abschnitte im Datensatz lokalisieren.

Tabelle 1. Datensatzzuordnungen für den Header/selbstdefinierenden Abschnitt des SMF-Datensatzes
Offset (dezimal) Offset (hexadezimal) Ihren Namen Länge Format Beschreibung
0 0 SMF121LEN 2 Binär Satzlänge (maximale Größe 32.756). Dieses Feld und das nächste Feld (insgesamt vier Byte) bilden das Satzdeskriptorwort (RDW). Die ersten zwei Byte (dieses Feld) müssen die Länge des logischen Satzes einschließlich des RDW enthalten.
2 2 SMF121SEG 2 Binär Von SMF bereitgestellter Segmentdeskriptor. Mit Nullen initialisieren.
4 4 SMF121FLG 1 Binär Systemanzeiger. Die Bits haben folgende Bedeutung, wenn sie gesetzt sind:
  1. 0: reserviert
  2. 1: Subtypen sind gültig
  3. 2: reserviert
  4. 3: MVS /SP Version 4 und höher. Die Bits 3, 4, 5 und 6 sind aktiviert. Eine bewährte Vorgehensweise ist die Verwendung des Datensatztyps 30, um die MVS Produktebene zu ermitteln.
  5. 4: MVS /SP Version 3. Die Bits 4, 5 und 6 sind auf
  6. 5: MVS /SP Version 2. Bit 5 und 6 sind aktiviert
  7. 6: VS2. Bit 6 ist aktiviert
  8. 7: reserviert
5 5 SMF121RTY 1 Binär Datensatztyp. Der Wert sollte 121 dezimal sein.
6 6 SMF121TME 4 Binär Zeit seit Mitternacht (in Hundertstelsekunden), zu der der Datensatz in den SMF-Puffer verschoben wurde.
10 A SMF121DTE 4 packed Datum, an dem der Datensatz in den SMF-Puffer verschoben wurde, im Format 00yydddF oder 0cyydddF . In diesem Format ist c 0 für 19xx und 1 für 20xx, yy ist das aktuelle Jahr (0-99), ddd ist der aktuelle Tag (1-366) und F ist das Vorzeichen).
14. E SMF121SID 4 EBCDIC Systemkennung.
18. 12. SMF121SSI 4 EBCDIC Subsystemidentifikation.
22 16 SMF121STY 2 Binär Datensatzsubtyp. Dies sollte eine Dezimalzahl sein.
24 18. SMF121SDS_TRIPLETS 2 Binär Anzahl der Triplets (Kombinationen aus Offset/Länge/Anzahl).

Bei Version 1 gibt es 3 Triolen:

  • Java-Laufzeit
  • Garbage-Collector
  • thread

Bei Version 2 gibt es vier Triolen:

  • Java-Laufzeit
  • Garbage-Collector
  • thread
  • JES Job-Informationen
26 1A SMF121SDS_RSERVD 2 Binär Reserviert für die Vollwortausrichtung des nächsten Felds.
28 1C SMF121SDS_OFFJRS 4 Binär Offset zum Java Runtime-Abschnitt.
32 20 Jahre SMF121SDS_LENJRS 2 Binär Länge jedes Java Runtime-Abschnitts.
34 22 SMF121SDS_NUMJRS 2 Binär Anzahl der Java Runtime-Abschnitte. Es sollte nur 1 Java Runtime-Abschnitt vorhanden sein.
36 24 SMF121SDS_OFFGCS 4 Binär Offset zum Garbage-Collector-Abschnitt.
40 28 SMF121SDS_LENGCS 2 Binär Länge jedes Garbage-Collector-Abschnitts.
42 2A SMF121SDS_NUMGCS 2 Binär Anzahl der Garbage-Collector-Abschnitte. Dies hängt davon ab, wie viele Garbage-Collectors in der Java VM aktiv sind.
44 2C SMF121SDS_OFFTS 4 Binär Offset zum Gewindeabschnitt.
48 30 SMF121SDS_LENTS 2 Binär Länge jedes Threadabschnitts.
50 32 SMF121SDS_NUMTS 2 Binär Anzahl der Threadabschnitte. Diese Anzahl hängt von der Anzahl der aktiven Java-Threads ab.
52 34   0   Ende von SMF121_1_Header_version 1
52 34 SMF121SDS_OFFJOB 4 Binär Beginn der Änderungen für 11.0.27.0Versatz zum JES-JobbereichEnde der Änderungen für 11.0.27.0
56 38 SMF121SDS_LENJOB 2 Binär Länge des JES-Auftragsabschnitts
58 3A SMF121SDS_NUMJOB 2 Binär Nummer der JES-Jobabschnitte. Beachten Sie, dass es nur einen JES-Job-Bereich gibt.
60.000 3C   0   Ende von SMF121_1_Header_version 2

Java-Laufzeitabschnitt

Tripletinformationen: Dieser Abschnitt befindet sich im Datensatz unter Verwendung der folgenden Tripletfelder, die sich im Abschnitt Header/selbstdefinierender Abschnittbefinden.

Tabelle 2. Datensatzzuordnungen für den Java Runtime-Abschnitt des SMF-Datensatzes
Offset (dezimal) Offset (hexadezimal) Ihren Namen Länge Format Beschreibung
0 0 SMF121JRS_FDFLAGS 4 Binär Feldflags, die das Hinzufügen neuer Felder angeben Die Bedeutung der Bits, wenn Markierungsbyte 1 gesetzt ist, lautet wie folgt:
  • 0: Enthält Zusammenfassungsfelder zur CPU-Belastung. Zu den Feldern gehören SMF121JRS_APPCPU, SMF121JRS_SYSCPU, SMF121JRS_GCCPUund SMF121JRS_JITCPU.
  • 1-7: reserviert
Markierungsbyte 2, 3 und 4 sind reserviert.
4 4 SMF121JRS_NAME 80 EBCDIC Formatierter Name für die aktive Java Virtual Machine im Format pid@hostname. Abgerufen von java.lang.management.RuntimeMXBean::getName(). Wenn der Name länger als 80 Zeichen ist, wird er abgeschnitten.
84 54 SMF121JRS_STRTTME 8 Binär Die ungefähre Zeit in Millisekunden, zu der die Java Virtual Machine gestartet wurde. Abgerufen von java.lang.management.RuntimeMXBean::getStartTime().
92 5C SMF121JRS_UPTIME 8 Binär Die Betriebszeit der Java Virtual Machine in Millisekunden. Abgerufen von java.lang.management.RuntimeMXBean::getUptime().
100 64 SMF121JRS_GCMODE 40 EBCDIC Der aktuelle Garbage-Collection-Modus als lesbare Zeichenfolge. Abgerufen von com.ibm.lang.management.MemoryMXBean::getGCMode(). Wenn die Zeichenfolge länger als 40 Zeichen ist, wird sie abgeschnitten.
140 8C SMF121JRS_PEAKTHRD 4 Binär Der Spitzenwert für die Anzahl der Live-Threads seit dem Start der Java Virtual Machine oder seit dem Zurücksetzen des Spitzenwerts. Abgerufen von java.lang.management.ThreadMXBean::getPeakThreadCount().
144 90 SMF121JRS_CURRTHRD 4 Binär Die aktuelle Anzahl der Live-Threads, einschließlich Dämonthreads und Nicht-Dämonthreads. Abgerufen von java.lang.management.ThreadMXBean::getThreadCount().
148 94 SMF121JRS_APPCPU 8 Binär Die gesamte CPU-Auslastung für alle Anwendungsthreads in Mikrosekunden. Abgerufen von com.ibm.lang.management.JvmCpuMonitorInfo::getApplicationCpuTime(). Wenn keine Informationen zur CPU-Belastung verfügbar sind, enthält dieses Feld -1.
156 9C SMF121JRS_SYSCPU 8 Binär Die gesamte CPU-Auslastung aller Systemthreads in Mikrosekunden, einschließlich GC-, JIT-und anderer JVM-Dämonthreads. Abgerufen von com.ibm.lang.management.JvmCpuMonitorInfo::getSystemJvmCpuTime(). Wenn keine Informationen zur CPU-Belastung verfügbar sind, enthält dieses Feld -1.
164 A4 SMF121JRS_GCCPU 8 Binär Die gesamte CPU-Auslastung aller GC-Threads in Mikrosekunden. from com.ibm.lang.management.JvmCpuMonitorInfo::getGcCpuTime()abgerufen. Wenn keine Informationen zur CPU-Belastung verfügbar sind, enthält dieses Feld -1.
172 Wechselstrom SMF121JRS_JITCPU 8 Binär Die gesamte CPU-Auslastung aller JIT-Threads in Mikrosekunden. from com.ibm.lang.management.JvmCpuMonitorInfo::getJitCpuTime()abgerufen. Wenn keine Informationen zur CPU-Belastung verfügbar sind, enthält dieses Feld -1.

Garbage-Collector-Abschnitt

Tripletinformationen: Dieser Abschnitt befindet sich im Datensatz unter Verwendung der folgenden Tripletfelder, die sich im Abschnitt Header/selbstdefinierender Abschnittbefinden.

Tabelle 3. Datensatzzuordnungen für den Garbage-Collector-Abschnitt des SMF-Datensatzes
Offset (dezimal) Offset (hexadezimal) Ihren Namen Länge Format Beschreibung
0 0 SMF121GCS_FDFLAGS 4 Binär Feldflags, die angeben, dass neue Felder hinzugefügt werden, sollten derzeit nur Nullen sein.
4 4 SMF121GCS_NAME 40 EBCDIC Der Name des Garbage-Collectors. Abgerufen von com.ibm.lang.management.GarbageCollectorMXBean::getName(). Wenn der Name länger als 40 Zeichen ist, wird er abgeschnitten.
44 2C SMF121GCS_COLLCNT 8 Binär Gesamtzahl der Erfassungen, die aufgetreten sind. Abgerufen von com.ibm.lang.management.GarbageCollectorMXBean::getCollectionCount().
52 34 SMF121GCS_COLLTME 8 Binär Die näherungsweise berechnete kumulierte abgelaufene Zeit für die Erfassung in Millisekunden. Abgerufen von com.ibm.lang.management.GarbageCollectorMXBean::getCollectionTime().
60.000 3C SMF121GCS_TMEMFREED 8 Binär Die kumulative Gesamtmenge des vom Garbage-Collector freigegebenen Speichers in Byte. Abgerufen von com.ibm.lang.management.GarbageCollectorMXBean::getTotalMemoryFreed().
68 44 SMF121GCS_TCOMPACTS 8 Binär Die kumulative Gesamtzahl der vom Garbage-Collector ausgeführten Komprimierungen. Abgerufen von com.ibm.lang.management.GarbageCollectorMXBean::getTotalCompacts().
76 4C SMF121GCS_MEMUSED 8 Binär Eine Momentaufnahme der Heapspeichermenge, die von Objekten verwendet wird, die der Garbage-Collector unmittelbar vor der Aufzeichnung dieses SMF-Datensatzes verwaltet. Abgerufen von com.ibm.lang.management.GarbageCollectorMXBean::getMemoryUsed().

Abschnitt 'Thread'

Tripletinformationen: Dieser Abschnitt befindet sich im Datensatz unter Verwendung der folgenden Tripletfelder, die sich im Abschnitt Header/selbstdefinierender Abschnittbefinden.

Tabelle 4. Datensatzzuordnungen für den Threadabschnitt des SMF-Datensatzes
Offset (dezimal) Offset (hexadezimal) Ihren Namen Länge Format Beschreibung
0 0 SMF121TS_FDFLAGS 4 Binär Feldflags, die angeben, dass neue Felder hinzugefügt werden, sollten derzeit nur Nullen sein.
4 4 SMF121TS_ID 8 Binär Java-Thread-ID. Abgerufen von java.lang.management.ThreadInfo::getThreadId().
12. C SMF121TS_NAME 24 EBCDIC Java-Threadname. Abgerufen von java.lang.management.ThreadInfo::getThreadName(). Wenn der Name länger als 24 Zeichen ist, wird er abgeschnitten.
36 24 SMF121TS_CAT 8 EBCDIC

Threadkategorie. Abgerufen von com.ibm.lang.management.JvmCpuMonitorMXBean::getThreadCategory(long).

Mögliche Threadkategorien sind: APP, APP-U1, APP-U2, APP-U3, APP-U4, APP-U5, SYS, GC, JIT. SONSTIGES, RM.

Wenn keine Threadkategorieinformationen verfügbar sind, enthält dieses Feld eine leere Zeichenfolge.

44 2C SMF121TS_CPU 8 Binär Die gesamte CPU-Nutzungszeit. Dieses Feld hat eine Genauigkeit von Nanosekunden, aber möglicherweise keine Genauigkeit von Nanosekunden. Abgerufen von java.lang.management.ThreadMXBean::getThreadCpuTime(long). Wenn keine Informationen zur CPU-Belastung verfügbar sind, enthält dieses Feld -1.
52 34 SMF121TS_NATIVEID 8 Binär Die ID des entsprechenden nativen Betriebssystemthreads. Wenn diese Informationen nicht verfügbar sind, enthält das Feld -1.

Beginn der Änderungen für 11.0.27.0JCL-Job-AbschnittEnde der Änderungen für 11.0.27.0

Tripletinformationen: Dieser Abschnitt befindet sich im Datensatz unter Verwendung der folgenden Tripletfelder, die sich im Abschnitt Header/selbstdefinierender Abschnittbefinden.

Tabelle 5. Datensatz-Zuordnungen für den JCL-Job-Abschnitt des SMF-Datensatzes
Offset (dezimal) Offset (hexadezimal) Ihren Namen Länge Format Beschreibung
0 0 SMF121JOB_JOBNAME 8 EBCDIC Jobname
8 8 SMF121JOB_JOBID 8 EBCDIC Job-ID
16 10 SMF121JOB_STEPNAME 8 EBCDIC Name des Arbeitsschritts
24 18. SMF121JOB_STEPNUM 1 Binär Nummer des Arbeitsschritts
25 GB 19. SMF121JOB_JOBCORR 64 EBCDIC JES Job-Korrelator
89 59 SMF121JOB_JOBENTRY 4 Binär JES-Leser Eingabezeit in 1/100'S sec
93 5D SMF121JOB_JOBEDATE 4 Binär Eintragungsdatum des JES-Lesers 0CYYDDDF