21.4. kvm_stat
kvm_stat 명령은
kvm
커널 모듈에서 런타임 통계를 검색하는 python 스크립트입니다. kvm_stat 명령은 kvm
에 표시되는 게스트 동작을 진단하는 데 사용할 수 있습니다. 특히 게스트와 관련된 성능 관련 문제는 다음과 같습니다. 현재 보고된 통계는 전체 시스템에 대한 것이며 실행 중인 모든 게스트의 동작이 보고됩니다. 이 스크립트를 실행하려면 qemu-kvm-tools 패키지를 설치해야 합니다.
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 출력
kvm_stat 명령은 모든 게스트 및 호스트에 대한 통계를 출력합니다. 명령이 종료될 때까지 출력이 업데이트됩니다( Ctrl+c 또는 q 키 사용).
# kvm_stat kvm statistics efer_reload 94 0 exits 4003074 31272 fpu_reload 1313881 10796 halt_exits 14050 259 halt_wakeup 4496 203 host_state_reload 1638354 24893 hypercalls 0 0 insn_emulation 1093850 1909 insn_emulation_fail 0 0 invlpg 75569 0 io_exits 1596984 24509 irq_exits 21013 363 irq_injections 48039 1222 irq_window 24656 870 largepages 0 0 mmio_exits 11873 0 mmu_cache_miss 42565 8 mmu_flooded 14752 0 mmu_pde_zapped 58730 0 mmu_pte_updated 6 0 mmu_pte_write 138795 0 mmu_recycled 0 0 mmu_shadow_zapped 40358 0 mmu_unsync 793 0 nmi_injections 0 0 nmi_window 0 0 pf_fixed 697731 3150 pf_guest 279349 0 remote_tlb_flush 5 0 request_irq 0 0 signal_exits 1 0 tlb_flush 200190 0
변수에 대한 설명:
- efer_reload
- EFER(Extended Feature Enable Register)가 다시 로드되는 수입니다.
- 종료
- 모든
VMEXIT
호출 수입니다. - fpu_reload
VMENTRY
가 FPU 상태를 다시 로드한 횟수입니다. 게스트가FPU(유동 포인트 단위)를 사용하는 경우 fpu_reload 가 증가합니다.- halt_exits
중지
호출으로 인한 게스트 종료 수입니다. 이러한 유형의 종료는 일반적으로 게스트가 유휴 상태일 때 표시됩니다.- halt_wakeup
- 중지에서 발생한 오류 발생 수
입니다
. - host_state_reload
- 호스트 상태에 대한 전체 재로드 수(현재 MSR 설정 및 게스트 MSR 읽기)입니다.
- 하이퍼 호출
- 게스트 하이퍼바이저 서비스 호출 수입니다.
- insn_emulation
- 호스트에서 에뮬레이션한 게스트 명령 수입니다.
- insn_emulation_fail
- 실패한
insn_emulation
시도 수입니다. - io_exits
- I/O 포트 액세스에서 종료되는 게스트 수입니다.
- irq_exits
- 외부 인터럽트로 인해 종료 수입니다.
- irq_injections
- 게스트에 전송된 인터럽트 수입니다.
- irq_window
- 게스트 수는 적용되지 않은 인터럽트 창에서 종료됩니다.
- largepages
- 현재 사용 중인 큰 페이지 수입니다.
- mmio_exits
- Memory mapped I/O (MMIO) 액세스로 인해 게스트 수가 종료됩니다.
- mmu_cache_miss
- 생성된 KVM MMU 섀도우 페이지 수입니다.
- mmu_flooded
- MMU 페이지에 대한 과도한 쓰기 작업의 탐지 수입니다. 이 수는 개별 쓰기 작업이 아닌 쓰기 작업을 감지했습니다.
- mmu_pde_zapped
- PDE(Page Directory entry) 삭제 작업 수입니다.
- mmu_pte_updated
- 페이지 테이블 항목 (PTE) 삭제 작업 수.
- mmu_pte_write
- 게스트 페이지 테이블 항목(PTE) 쓰기 작업 수입니다.
- mmu_recycled
- 회수할 수 있는 그림자 페이지 수입니다.
- mmu_shadow_zapped
- 유효하지 않은 그림자 페이지 수.
- mmu_unsync
- 아직 연결되지 않은 동기화되지 않은 페이지 수입니다.
- nmi_injections
- nMI(Non-maskable Interrupt) 삽입 수입니다.
- nmi_window
- 게스트 수는 (거울) NMI(Non-maskable Interrupt) 창에서 종료됩니다.
- pf_fixed
- 고정되지 않은 페이지 테이블 항목(PTE) 수입니다.
- pf_guest
- 게스트에 삽입된 페이지 폴트 수입니다.
- remote_tlb_flush
- 원격(sibling CPU) Translation lookaside Buffer (TLB) 플러시 요청 수입니다.
- request_irq
- 게스트 중단 창 요청 수가 종료됩니다.
- signal_exits
- 호스트에서 보류 중인 신호 때문에 게스트 수가 종료됩니다.
- tlb_flush
- 하이퍼바이저에서 수행하는
tlb_flush
작업의 수입니다.
참고
kvm_stat 명령의 출력 정보는
/sys/kernel/debug/kvm/
디렉터리에 있는 의사 파일로 KVM 하이퍼바이저에 의해 내보냅니다.