자바 런타임 통계

HJV_JZOS_JVM_SMF_LOGGING JZOS 환경 변수를 사용하여 Java™ 런타임 통계를 포함하는 시스템 관리 기능 (SMF) 레코드의 로깅을 사용할 수 있습니다.

기본적으로 자바 런타임 통계의 로깅은 사용 불가능합니다. 이 환경 변수가 true로 설정된 경우, JZOS 배치 실행 프로그램은 JVM 종료 후크를 등록하여 JVM이 종료되기 직전에 Java 런타임 성능 통계를 포함하는 SMF 레코드를 로깅합니다.

또한 HJV_JZOS_JVM_SMF_LOGGING_INTERVAL 환경 변수를 사용하여 SMF 레코드의 정기적인 로깅을 사용할 수도 있습니다. 다른 환경 변수 HJV_JZOS_JVM_SMF_THREADS은 개별 스레드의 세부사항이 이러한 SMF 레코드에 포함되는지 여부를 제어합니다. 마지막으로 HJV_JZOS_JVM_SMF_THREADS_NATIVE_ID 환경 변수는 개별 스레드 세부사항 섹션에서 올바른 기본 운영 체제 스레드 ID 정보가 지정되는지 여부를 제어합니다. JZOS 환경 변수 구성에 대한 자세한 정보는 JZOS 환경 변수를 참조하십시오.

JZOS 일괄처리 실행기는 SMF 레코드 유형 121을 사용하여 Java 런타임 성능 통계를 기록한다. 레코드 맵핑은 다음 테이블에 표시됩니다.

헤더/자체 정의 섹션

이 섹션에는 레코드의 다른 섹션을 찾는 공통 SMF 레코드 헤더 필드 및 삼중항 필드 (섹션, 섹션 길이 또는 섹션 수) 가 포함되어 있다.

표 1. SMF 레코드의 헤더/자체 정의 섹션에 대한 레코드 맵핑
오프셋 (소수점) 오프셋 (16진) 이름 길이 형식 설명
0 0 SMF121LEN 2 2진 레코드 길이 (최대 크기 32,756). 이 필드와 다음 필드 (총 4바이트) 는 레코드 디스크립터 단어 (RDW) 를 형성한다. 처음 두 바이트 (이 필드) 는 RDW를 포함하여 논리 레코드 길이를 포함해야 합니다.
2 2 SMF121SEG 2 2진 SMF 에서 제공하는 세그먼트 디스크립터입니다. 0으로 초기화한다.
4 4 SMF121FLG 1 2진 시스템 표시기. 설정 시 비트의 의미는 다음과 같습니다.
  1. 0: 예약됨
  2. 1: 부속 유형이 유효합니다.
  3. 2: 예약됨
  4. 3: MVS /SP 버전 4 이상. 비트 3, 4, 5및 6이 설정되어 있습니다. 제품 MVS 수준을 얻기 위해 레코드 유형 30을 사용하는 것이 좋은 방법입니다.
  5. 4: MVS /SP 버전 3. 비트 4, 5및 6은 다음과 같습니다.
  6. 5: MVS /SP 버전 2. 비트 5와 6은 다음과 같습니다.
  7. 6: VS2. 비트 6가 켜져 있습니다.
  8. 7: 예약됨
5 5 SMF121RTY 1 2진 레코드 유형입니다. 이 값은 121개의 10진수입니다.
6 6 SMF121TME 4 2진 자정 이후의 시간 (100분의 1초) 이후 레코드가 SMF 버퍼로 이동한 시간입니다.
1,000만 A SMF121DTE 4 팩형 레코드가 SMF 버퍼로 이동된 날짜 (00yydddF 또는 0cyydddF ) 입니다. 이 형식에서 c 는 19xx 의 경우 0이고 20xx의 경우 1, yy 는 현재 연도 (0-99), ddd 는 현재 일 (1-366), F 는 부호입니다.
14 E SMF121SID 4 EBCDIC 시스템 ID입니다.
18 12 SMF121SSI 4 EBCDIC 서브시스템 ID.
22 그림 16 SMF121STY 2 2진 레코드 하위 유형. 이 값은 10진수이어야 합니다.
24 18 SMF121SDS_TRIPLETS 2 2진 삼중항의 수 (오프셋/길이/수 조합).

버전 1의 경우 세 쌍둥이가 있습니다:

  • Java 런타임
  • 가비지 콜렉터
  • 스레드

버전 2의 경우 세 쌍둥이가 네 명입니다:

  • Java 런타임
  • 가비지 콜렉터
  • 스레드
  • JES 채용 정보
26 1A SMF121SDS_RSERVD 2 2진 다음 필드의 전체 단어 맞추기를 고려하도록 예약되어 있습니다.
28 1C SMF121SDS_OFFJRS 4 2진 자바 런타임 섹션에 대한 오프셋.
32 20 SMF121SDS_LENJRS 2 2진 각 자바 런타임 섹션의 길이입니다.
34 22 SMF121SDS_NUMJRS 2 2진 자바 런타임 섹션 수. 자바 런타임 섹션은 하나만 있어야 합니다.
36 24 SMF121SDS_OFFGCS 4 2진 가비지 콜렉터 섹션에 대한 오프셋입니다.
40 28 SMF121SDS_LENGCS 2 2진 각 가비지 콜렉터 섹션의 길이입니다.
42 2A SMF121SDS_NUMGCS 2 2진 가비지 콜렉터 섹션 수. 이는 Java VM 에서 얼마나 많은 가비지 콜렉터가 활성화되어 있는지에 따라 달라진다.
44 2C SMF121SDS_OFFTS 4 2진 스레드 섹션에 대한 오프셋.
48 6시간에서 30분 SMF121SDS_LENTS 2 2진 각 스레드 섹션의 길이.
50 32 SMF121SDS_NUMTS 2 2진 스레드 섹션 수. 이 수는 활성 자바 스레드 수에 따라 다릅니다.
52 34   0   SMF121_1_Header_version 1 끝
52 34 SMF121SDS_OFFJOB 4 2진 변경 사항 시작 11.0.27.0JES 작업 섹션으로 오프셋변경 사항 종료 11.0.27.0
56 38 SMF121SDS_LENJOB 2 2진 JES 작업 섹션의 길이
58개 3A SMF121SDS_NUMJOB 2 2진 JES 작업 섹션의 수입니다. JES 작업 섹션은 하나만 있다는 점에 유의하세요.
60 3C   0   SMF121_1_Header_version 2 끝

Java 런타임 섹션

삼중항 정보: 이 섹션은 머리글/자체 정의 섹션에 있는 다음 삼중항 필드를 사용하여 레코드에 있습니다.

표 2. SMF 레코드의 Java 런타임 섹션에 대한 레코드 맵핑
오프셋 (소수점) 오프셋 (16진) 이름 길이 형식 설명
0 0 SMF121JRS_FDFLAGS 4 2진 새 필드의 추가를 표시하는 필드 플래그입니다. 플래그 바이트 1이 설정될 때 비트의 의미는 다음과 같습니다.
  • 0: CPU 사용 요약 필드를 포함한다. 필드에는 SMF121JRS_APPCPU, SMF121JRS_SYSCPU, SMF121JRS_GCCPU및 SMF121JRS_JITCPU가 포함됩니다.
  • 1-7: 예약
플래그 바이트 2, 3및 4가 예약되었습니다.
4 4 SMF121JRS_NAME 80 EBCDIC 실행 중인 JVM (Java Virtual Machine) 을 나타내는 형식화된 이름 ( pid@hostname형식). java.lang.management.RuntimeMXBean::getName()에서 검색되었습니다. 이름이 80자를 초과하면 잘립니다.
84 54 SMF121JRS_STRTTME 8 2진 JVM (Java Virtual Machine) 이 시작된 대략적인 시간 (밀리초). java.lang.management.RuntimeMXBean::getStartTime()에서 검색되었습니다.
92 5C SMF121JRS_UPTIME 8 2진 JVM (Java Virtual Machine) 의 가동 시간 (밀리초). java.lang.management.RuntimeMXBean::getUptime()에서 검색되었습니다.
100년 6,400 SMF121JRS_GCMODE 40 EBCDIC 사용자가 읽을 수 있는 문자열로 현재 가비지 콜렉션 모드입니다. com.ibm.lang.management.MemoryMXBean::getGCMode()에서 검색되었습니다. 문자열이 40자보다 길면 잘립니다.
140 8C SMF121JRS_PEAKTHRD 4 2진 JVM (Java Virtual Machine) 이 시작되었거나 피크 카운트가 재설정된 이후의 피크 라이브 스레드 수. java.lang.management.ThreadMXBean::getPeakThreadCount()에서 검색되었습니다.
144 90 SMF121JRS_CURRTHRD 4 2진 디먼 및 비디먼 스레드를 포함하여 현재 활성 스레드 수입니다. java.lang.management.ThreadMXBean::getThreadCount()에서 검색되었습니다.
148 94 SMF121JRS_APPCPU 8 2진 모든 애플리케이션 스레드의 총 CPU 사용량 (마이크로초). com.ibm.lang.management.JvmCpuMonitorInfo::getApplicationCpuTime()에서 검색되었습니다. CPU 사용 정보를 사용할 수 없는 경우 이 필드에는 -1가 포함됩니다.
156 9C SMF121JRS_SYSCPU 8 2진 GC, JIT및 기타 JVM 디먼 스레드를 포함하는 모든 시스템 스레드의 총 CPU 사용량 (마이크로초). com.ibm.lang.management.JvmCpuMonitorInfo::getSystemJvmCpuTime()에서 검색되었습니다. CPU 사용 정보를 사용할 수 없는 경우 이 필드에는 -1가 포함됩니다.
164 A4 SMF121JRS_GCCPU 8 2진 모든 GC 쓰레드의 총 CPU 사용량 (마이크로초). from com.ibm.lang.management.JvmCpuMonitorInfo::getGcCpuTime()을 검색했습니다. CPU 사용 정보를 사용할 수 없는 경우 이 필드에는 -1가 포함됩니다.
172 AC SMF121JRS_JITCPU 8 2진 모든 JIT 스레드의 총 CPU 사용량 (마이크로초). from com.ibm.lang.management.JvmCpuMonitorInfo::getJitCpuTime()을 검색했습니다. CPU 사용 정보를 사용할 수 없는 경우 이 필드에는 -1가 포함됩니다.

가비지 컬렉터 섹션

삼중항 정보: 이 섹션은 머리글/자체 정의 섹션에 있는 다음 삼중항 필드를 사용하여 레코드에 있습니다.

표 3. SMF 레코드의 가비지 컬렉터 섹션에 대한 레코드 맵핑
오프셋 (소수점) 오프셋 (16진) 이름 길이 형식 설명
0 0 SMF121GCS_FDFLAGS 4 2진 새 필드의 추가를 표시하는 필드 플래그는 현재 모두 0이어야 합니다.
4 4 SMF121GCS_NAME 40 EBCDIC 가비지 컬렉터 이름. com.ibm.lang.management.GarbageCollectorMXBean::getName()에서 검색되었습니다. 이름이 40자를 초과하면 잘립니다.
44 2C SMF121GCS_COLLCNT 8 2진 발생한 총 콜렉션 수. com.ibm.lang.management.GarbageCollectorMXBean::getCollectionCount()에서 검색되었습니다.
52 34 SMF121GCS_COLLTME 8 2진 대략적으로 누적된 콜렉션 경과 시간 (밀리초) 입니다. com.ibm.lang.management.GarbageCollectorMXBean::getCollectionTime()에서 검색되었습니다.
60 3C SMF121GCS_TMEMFREED 8 2진 가비지 콜렉터에 의해 해제된 메모리의 누적 총계 (바이트) 입니다. com.ibm.lang.management.GarbageCollectorMXBean::getTotalMemoryFreed()에서 검색되었습니다.
68 44 SMF121GCS_TCOMPACTS 8 2진 가비지 콜렉터가 수행한 누적 총 압축 수입니다. com.ibm.lang.management.GarbageCollectorMXBean::getTotalCompacts()에서 검색되었습니다.
76 4C SMF121GCS_MEMUSED 8 2진 이 SMF 레코드가 기록되기 직전에 가비지 콜렉터가 관리하는 오브젝트에 사용되는 힙 메모리 양의 스냅샷입니다. com.ibm.lang.management.GarbageCollectorMXBean::getMemoryUsed()에서 검색되었습니다.

스레드 섹션

삼중항 정보: 이 섹션은 머리글/자체 정의 섹션에 있는 다음 삼중항 필드를 사용하여 레코드에 있습니다.

[표 4] SMF 레코드의 스레드 섹션에 대한 레코드 맵핑
오프셋 (소수점) 오프셋 (16진) 이름 길이 형식 설명
0 0 SMF121TS_FDFLAGS 4 2진 새 필드의 추가를 표시하는 필드 플래그는 현재 모두 0이어야 합니다.
4 4 SMF121TS_ID 8 2진 자바 쓰레드 ID. java.lang.management.ThreadInfo::getThreadId()에서 검색되었습니다.
12 C SMF121TS_NAME 24 EBCDIC 자바 쓰레드 이름. java.lang.management.ThreadInfo::getThreadName()에서 검색되었습니다. 이름이 24자보다 긴 경우 잘립니다.
36 24 SMF121TS_CAT 8 EBCDIC

스레드 범주. com.ibm.lang.management.JvmCpuMonitorMXBean::getThreadCategory(long)에서 검색되었습니다.

가능한 스레드 범주는 다음과 같습니다. APP, APP-U1, APP-U2, APP-U3, APP-U4, APP-U5, SYS, GC, JIT. 기타, RM.

스레드 카테고리 정보를 사용할 수 없는 경우 이 필드에는 비어 있는 문자열이 포함됩니다.

44 2C SMF121TS_CPU 8 2진 총 CPU 사용 시간. 이 필드에는 나노초 정밀도가 있지만 나노초 정확도가 없을 수도 있습니다. java.lang.management.ThreadMXBean::getThreadCpuTime(long)에서 검색되었습니다. CPU 사용 정보를 사용할 수 없는 경우 이 필드에는 -1가 포함됩니다.
52 34 SMF121TS_NATIVEID 8 2진 대응하는 네이티브 OS 쓰레드 ID. 이 정보를 사용할 수 없는 경우, 필드에 -1가 포함됩니다.

변경 사항 시작 11.0.27.0JCL 작업 섹션변경 사항 종료 11.0.27.0

삼중항 정보: 이 섹션은 머리글/자체 정의 섹션에 있는 다음 삼중항 필드를 사용하여 레코드에 있습니다.

[표 5] SMF 레코드의 JCL 작업 섹션에 대한 레코드 매핑
오프셋 (소수점) 오프셋 (16진) 이름 길이 형식 설명
0 0 SMF121JOB_JOBNAME 8 EBCDIC 작업 이름
8 8 SMF121JOB_JOBID 8 EBCDIC 작업 ID
그림 16 1,000만 SMF121JOB_STEPNAME 8 EBCDIC 작업 단계 이름
24 18 SMF121JOB_STEPNUM 1 2진 작업 단계 번호
25 19일 SMF121JOB_JOBCORR 6,400 EBCDIC JES 작업 상관관계자
89 59 SMF121JOB_JOBENTRY 4 2진 1/100초 단위의 JES 리더 입력 시간
93 5D SMF121JOB_JOBEDATE 4 2진 JES 리더 입력 날짜 0CYYDDDF