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.
| 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:
|
| 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:
Bei Version 2 gibt es vier Triolen:
|
| 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 | Versatz zum JES-Jobbereich![]() |
| 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.
| 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:
|
| 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.
| 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.
| 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. |
JCL-Job-Abschnitt
Tripletinformationen: Dieser Abschnitt befindet sich im Datensatz unter Verwendung der folgenden Tripletfelder, die sich im Abschnitt Header/selbstdefinierender Abschnittbefinden.
| 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 |