2장. 성능 모니터링 툴
이 장에서는 게스트 가상 머신 환경을 모니터링하는 데 사용되는 툴에 대해 설명합니다.
2.1. perf kvm
kvm 옵션과 함께 perf 명령을 사용하여 호스트에서 게스트 운영 체제 통계를 수집하고 분석할 수 있습니다. perf 패키지는 perf 명령을 제공합니다. 다음 명령을 실행하여 설치됩니다.
# yum install perf
호스트에서 perf kvm 을 사용하려면 게스트의
/proc/modules
및 /proc/kallsyms
파일에 액세스할 수 있어야 합니다. 절차 2.1. “게스트에서 호스트로 /proc 파일 복사” 를 참조하여 파일을 호스트로 전송하고 파일에서 보고서를 실행합니다.
절차 2.1. 게스트에서 호스트로 /proc 파일 복사
중요
필요한 파일(예: scp)을 직접 복사하는 경우 제로 길이의 파일만 복사합니다. 이 절차에서는 먼저 게스트의 파일을 임시 위치( cat 명령 포함)에 저장한 다음, perf kvm 에서 사용할 수 있도록 호스트에 복사하는 방법을 설명합니다.
게스트에 로그인하고 파일을 저장합니다.
게스트에 로그인하고 /proc/modules 및
를 임시 위치인/proc
/kallsyms/tmp
에 저장합니다.# cat /proc/modules > /tmp/modules # cat /proc/kallsyms > /tmp/kallsyms
임시 파일을 호스트에 복사
게스트에서 로그아웃한 후 다음 예제 scp 명령을 실행하여 저장된 파일을 호스트에 복사합니다. 호스트 이름과 TCP 포트가 다른 경우 교체해야합니다.# scp root@GuestMachine:/tmp/kallsyms guest-kallsyms # scp root@GuestMachine:/tmp/modules guest-modules
이제 호스트의 게스트(guest-kallsyms
및guest-modules
)의 두 개의 파일이 있어 perf kvm 에서 사용할 수 있습니다.kvm을 사용하여 기록 및 보고 이벤트
이전 단계에서 얻은 파일을 사용하여 게스트, 호스트 또는 둘 다에서 이벤트를 기록하고 보고할 수 있습니다.다음 예제 명령을 실행합니다.# perf kvm --host --guest --guestkallsyms=guest-kallsyms \ --guestmodules=guest-modules record -a -o perf.data
참고명령에 --host 및 --guest 를 모두 사용하면 출력이perf.data.kvm
에 저장됩니다. --host 만 사용하면 파일 이름이perf.data.host
이 됩니다. 마찬가지로 --guest 만 사용하면 파일 이름이perf.data.guest
이 됩니다.Ctrl-C를 누르면 기록이 중지됩니다.보고 이벤트
다음 예제 명령은 기록 프로세스에서 얻은 파일을 사용하고 출력을 새 파일로 리디렉션하고 을분석합니다
.perf kvm --host --guest --guestmodules=guest-modules report -i perf.data.kvm \ --force > analyze
분석
파일의 내용을 보고 기록된 이벤트를 검사합니다.# cat analyze # Events: 7K cycles # # Overhead Command Shared Object Symbol # ........ ............ ................. ......................... # 95.06% vi vi [.] 0x48287 0.61% init [kernel.kallsyms] [k] intel_idle 0.36% vi libc-2.12.so [.] _wordcopy_fwd_aligned 0.32% vi libc-2.12.so [.] __strlen_sse42 0.14% swapper [kernel.kallsyms] [k] intel_idle 0.13% init [kernel.kallsyms] [k] uhci_irq 0.11% perf [kernel.kallsyms] [k] generic_exec_single 0.11% init [kernel.kallsyms] [k] tg_shares_up 0.10% qemu-kvm [kernel.kallsyms] [k] tg_shares_up [output truncated...]