Red Hat Training

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

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 하이퍼바이저에 의해 내보냅니다.