A.4. kvm_stat
kvm_stat 명령은
kvm
커널 모듈에서 런타임 통계를 검색하는 python 스크립트입니다. kvm_stat 명령을 사용하여 kvm
에 표시되는 게스트 동작을 진단할 수 있습니다. 특히 게스트와 관련된 성능 관련 문제가 있습니다. 현재 보고된 통계는 전체 시스템에 적용됩니다. 실행 중인 모든 게스트의 동작이 보고됩니다. 이 스크립트를 실행하려면 qemu-kvm-tools 패키지를 설치해야 합니다. 자세한 내용은 2.2절. “기존 Red Hat Enterprise Linux 시스템에 가상화 패키지 설치”의 내용을 참조하십시오.
kvm_stat 명령을 사용하려면
kvm
커널 모듈이 로드되고 debugfs 가 마운트됩니다. 이러한 기능 중 하나가 활성화되지 않은 경우 명령은 debugfs 또는 kvm
모듈을 활성화하는 데 필요한 단계를 출력합니다. 예를 들면 다음과 같습니다.
# kvm_stat
Please mount debugfs ('mount -t debugfs debugfs /sys/kernel/debug')
and ensure the kvm modules are loaded
필요한 경우 debugfs 를 마운트합니다.
# mount -t debugfs debugfs /sys/kernel/debug
kvm_stat Output
kvm_stat 명령은 모든 게스트 및 호스트에 대한 통계를 출력합니다. Ctrl+c 또는 q 키를 사용하여 명령이 종료될 때까지 출력이 업데이트됩니다. 화면에 표시되는 출력은 다를 수 있습니다. 출력 요소에 대한 설명을 보려면 용어 중 하나를 클릭하여 조각 모음에 연결합니다.
# kvm_stat kvm statistics kvm_exit 17724 66 Individual exit reasons follow, see kvm_exit (NAME) for more information. kvm_exit(CLGI) 0 0 kvm_exit(CPUID) 0 0 kvm_exit(CR0_SEL_WRITE) 0 0 kvm_exit(EXCP_BASE) 0 0 kvm_exit(FERR_FREEZE) 0 0 kvm_exit(GDTR_READ) 0 0 kvm_exit(GDTR_WRITE) 0 0 kvm_exit(HLT) 11 11 kvm_exit(ICEBP) 0 0 kvm_exit(IDTR_READ) 0 0 kvm_exit(IDTR_WRITE) 0 0 kvm_exit(INIT) 0 0 kvm_exit(INTR) 0 0 kvm_exit(INVD) 0 0 kvm_exit(INVLPG) 0 0 kvm_exit(INVLPGA) 0 0 kvm_exit(IOIO) 0 0 kvm_exit(IRET) 0 0 kvm_exit(LDTR_READ) 0 0 kvm_exit(LDTR_WRITE) 0 0 kvm_exit(MONITOR) 0 0 kvm_exit(MSR) 40 40 kvm_exit(MWAIT) 0 0 kvm_exit(MWAIT_COND) 0 0 kvm_exit(NMI) 0 0 kvm_exit(NPF) 0 0 kvm_exit(PAUSE) 0 0 kvm_exit(POPF) 0 0 kvm_exit(PUSHF) 0 0 kvm_exit(RDPMC) 0 0 kvm_exit(RDTSC) 0 0 kvm_exit(RDTSCP) 0 0 kvm_exit(READ_CR0) 0 0 kvm_exit(READ_CR3) 0 0 kvm_exit(READ_CR4) 0 0 kvm_exit(READ_CR8) 0 0 kvm_exit(READ_DR0) 0 0 kvm_exit(READ_DR1) 0 0 kvm_exit(READ_DR2) 0 0 kvm_exit(READ_DR3) 0 0 kvm_exit(READ_DR4) 0 0 kvm_exit(READ_DR5) 0 0 kvm_exit(READ_DR6) 0 0 kvm_exit(READ_DR7) 0 0 kvm_exit(RSM) 0 0 kvm_exit(SHUTDOWN) 0 0 kvm_exit(SKINIT) 0 0 kvm_exit(SMI) 0 0 kvm_exit(STGI) 0 0 kvm_exit(SWINT) 0 0 kvm_exit(TASK_SWITCH) 0 0 kvm_exit(TR_READ) 0 0 kvm_exit(TR_WRITE) 0 0 kvm_exit(VINTR) 1 1 kvm_exit(VMLOAD) 0 0 kvm_exit(VMMCALL) 0 0 kvm_exit(VMRUN) 0 0 kvm_exit(VMSAVE) 0 0 kvm_exit(WBINVD) 0 0 kvm_exit(WRITE_CR0) 2 2 kvm_exit(WRITE_CR3) 0 0 kvm_exit(WRITE_CR4) 0 0 kvm_exit(WRITE_CR8) 0 0 kvm_exit(WRITE_DR0) 0 0 kvm_exit(WRITE_DR1) 0 0 kvm_exit(WRITE_DR2) 0 0 kvm_exit(WRITE_DR3) 0 0 kvm_exit(WRITE_DR4) 0 0 kvm_exit(WRITE_DR5) 0 0 kvm_exit(WRITE_DR6) 0 0 kvm_exit(WRITE_DR7) 0 0 kvm_entry 17724 66 kvm_apic 13935 51 kvm_emulate_insn 13924 51 kvm_mmio 13897 50 varl-kvm_eoi 3222 12 kvm_inj_virq 3222 12 kvm_apic_accept_irq 3222 12 kvm_pv_eoi 3184 12 kvm_fpu 376 2 kvm_cr 177 1 kvm_apic_ipi 278 1 kvm_msi_set_irq 295 0 kvm_pio 79 0 kvm_userspace_exit 52 0 kvm_set_irq 50 0 kvm_pic_set_irq 50 0 kvm_ioapic_set_irq 50 0 kvm_ack_irq 25 0 kvm_cpuid 90 0 kvm_msr 12 0
변수에 대한 설명:
kvm_ack_irq
- 인터럽트 컨트롤러 (PIC/IOAPIC) 인터럽트 승인 수kvm_age_page
- 메모리 관리 장치(MMU) 알림에 의한 페이지 사용 기간 반복 수입니다.kvm_apic
- APIC 레지스터 액세스 수입니다.kvm_apic_accept_irq
- 로컬 APIC에 허용되는 인터럽트 수입니다.kvm_apic_ipi
- 프로세서 인터럽트 수입니다.kvm_async_pf_completed
- 비동기 페이지 폴트 수입니다.kvm_async_pf_doublefault
- 비동기 페이지 폴트 수가 중단됩니다.kvm_async_pf_not_present
- 비동기 페이지 폴트의 초기화 횟수입니다.kvm_async_pf_ready
- 비동기 페이지 폴트 수입니다.kvm_cpuid
- 실행되는 CPUID 명령 수입니다.kvm_cr
- 묶기 및 에뮬레이션된 컨트롤 레지스터(CR) 액세스 수(CR0, CR3, CR4, CR8)kvm_emulate_insn
- 에뮬레이션된 명령 수입니다.kvm_entry
- 에뮬레이션된 명령 수입니다.kvm_eoi
- EOI(Advanced Programmable Interrupt Controller) 알림 종료입니다.kvm_exit
-VM-exits
수입니다.kvm_exit(NAME)
- 프로세서에 고유한 개별 종료입니다. 자세한 내용은 프로세서의 설명서를 참조하십시오.kvm_fpu
- KVM 부동 소수점 단위(FPU) 수를 다시 로드합니다.kvm_hv_hypercall
- 하이퍼 V 하이퍼 호출 수입니다.kvm_hypercall
- Hyper-V 하이퍼 호출 수입니다.kvm_inj_exception
- 게스트에 삽입된 예외 수입니다.kvm_inj_virq
- 게스트에 삽입된 인터럽트 수입니다.kvm_invlpga
- INVLPGA 명령의 수가 차단되었습니다.kvm_ioapic_set_irq
- 인터럽트 수준 수가 가상 IOAPIC 컨트롤러에 변경됨kvm_mmio
- 에뮬레이션된 메모리 매핑된 I/O(MMIO) 작업 수입니다.kvm_msi_set_irq
- MSI(메시지 서명 인터럽트) 수입니다.kvm_msr
- 모델별 레지스터(MSR) 액세스 수입니다.kvm_nested_intercepts
- L1의 L1 중첩된 SVM 스위치 수입니다.kvm_nested_vmrun
- L1의 중첩된 SVM 스위치 수입니다.kvm_nested_intr_vmexit
- 인터럽트 윈도우로 인해 중첩된 VM-exit 삽입 수입니다.kvm_nested_vmexit
- 중첩(L2) 게스트를 실행하는 동안 하이퍼바이저로 종료됩니다.kvm_nested_vmexit_inject
- L2의 L1 중첩된 스위치 수.kvm_page_fault
- 하이퍼바이저에서 처리하는 페이지 폴트 수입니다.kvm_pic_set_irq
- 인터럽트 수준 수가 가상 프로그래밍 가능 인터럽트 컨트롤러(PIC)로 변경됩니다.kvm_pio
- 에뮬레이션된 I/O(PIO) 작업 수입니다.kvm_pv_eoi
- EOI(Input of input) 이벤트 수입니다.kvm_set_irq
- 일반 IRQ 컨트롤러 레벨 (국가 PIC, IOAPIC 및 rootfs)의 인터럽트 수준 변경 수입니다.kvm_skinit
- SVM SKINIT이 종료됩니다.kvm_track_tsc
- 타임스탬프 카운터(TSC) 쓰기 수입니다.kvm_try_async_get_page
- 비동기 페이지 폴트 횟수입니다.kvm_update_master_clock
- pvclock 업데이트 번호입니다.kvm_userspace_exit
- 사용자 공간에 대한 종료 횟수입니다.kvm_write_tsc_offset
- TSC 오프셋 쓰기 수입니다.vcpu_match_mmio
- 캐시된 SPTE 메모리 매핑 I/O (MMIO)가 충돌했습니다.
kvm_stat 명령의 출력 정보는 KVM 하이퍼바이저에 의해
/sys/kernel/debug/tracing/events/kvm/
디렉터리에 있는 의사 파일로 내보냅니다.