KVM이 Windows 10 VM에서 "시스템 인터럽트"로 인해 간헐적으로 100% CPU 로드를 발생시키는 이유는 무엇입니까?

KVM이 Windows 10 VM에서 "시스템 인터럽트"로 인해 간헐적으로 100% CPU 로드를 발생시키는 이유는 무엇입니까?

저는 기본적으로 전 세계에 배포된 동일한 하드웨어를 갖춘 Ubuntu 16.04 LTS 서버 100대를 실행하고 있습니다. (20.04 LTS로 업그레이드하려고 노력하고 있지만 Ubuntu 측의 불행한 설계 결정으로 인해 여전히 이를 차단하고 있습니다.) 이러한 각 서버는 Windows 10 Enterprise가 포함된 KVM VM을 실행하고 있습니다. 그 중 세 개는 다음과 같은 문제를 보여줍니다.

뚜렷한 원인 없이 모니터링 결과 서버의 Linux 로드 평균이 2 이상으로 점프한 것으로 나타났습니다. Windows VM을 실행하는 프로세스 top의 CPU 로드가 qemu-system-x86VM에 할당된 2개의 코어와 일치하는 200%로 안정적으로 표시됩니다. VNC를 통해 액세스하는 Windows 데스크톱이 매우 느리게 나타납니다. Windows 작업 관리자에는 CPU를 100% 소모하는 "시스템 인터럽트" 프로세스가 표시됩니다.

Windows VM을 재부팅해도 상황이 해결되지 않습니다. 몇 시간, 심지어 며칠 동안 지속되다가 뚜렷한 원인이나 이유 없이 저절로 다시 정상으로 돌아옵니다.

Windows에서 "시스템 인터럽트"로 인해 CPU 사용량이 높아지는 이유를 조사한 결과 이것이 하드웨어 문제라는 일반적인 합의가 나타났습니다. 이 경우 Windows를 실행하는 하드웨어는 가상, 즉 KVM 하이퍼바이저입니다. 호스트의 물리적 하드웨어는 고부하 에피소드 전후에 변경되지 않았으며 이러한 에피소드를 표시하는 서버와 그렇지 않은 서버 간에도 크게 다르지 않습니다. Linux 호스트 시스템은 Windows 게스트의 과도한 로드를 제외하고는 어떤 오작동 징후도 보이지 않습니다. 영향을 받은 시스템에서 Linux 로그를 조사한 결과 특이한 점은 발견되지 않았습니다. Windows 이벤트 로그에는 서비스가 응답하지 않지만 가능한 원인을 나타내는 것은 없는 등 로드가 높은 에피소드 중에 명백한 2차 오류가 많이 표시됩니다.

그 행동의 가능한 원인을 어디서 찾기 시작합니까?

완전성을 위해 다음은 KVM 호출입니다.

kvm \
        -daemonize \
        -name "$vmname64-$(hostname)" \
        -drive file="/srv/kvm/${vmname64}.qcow2",if=virtio \
        -net nic,model=virtio,macaddr=$macaddr64 -net tap \
        -vga std \
        -rtc base=localtime \
        -usb -usbdevice tablet \
        -nodefaults \
        -runas srvadmin \
        -chroot /home/srvadmin \
        -k de \
        -smp 2 \
        -m 4096 \
        -vnc :1,password \
        -monitor mon:telnet:127.0.0.1:4445,server,nowait

관련 정보