Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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