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/ 디렉터리에 있는 의사 파일로 내보냅니다.