GPU 채널이 없는 Windows VM에서 최고의 비디오 성능을 얻는 방법은 무엇입니까?

GPU 채널이 없는 Windows VM에서 최고의 비디오 성능을 얻는 방법은 무엇입니까?

저는 업무용 노트북(Ryzen 5850U, 추가 GPU 없음)에서 OpenSUSE를 기본 OS로 사용하고 있지만 Asfar에 따르면 회사의 일부 통신이 S/MIME을 사용하여 암호화되기 때문에 업무용 Outlook 데스크톱 앱이 필요합니다. 내가 알기로 OWA는 Windows 이외의 시스템에서는 지원되지 않습니다. 로컬 Exchange 서버를 사용하고 있습니다.

그래서 libvirt를 사용하는 Windows VM을 설정하기로 결정했습니다. 내 가상 머신 구성은 다음과 같습니다.

<domain type="kvm">
  <name>RDPWindows</name>
  <uuid>350141fc-4158-43cc-afad-my-uuid</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://microsoft.com/win/10"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit="KiB">8388608</memory>
  <currentMemory unit="KiB">2097152</currentMemory>
  <vcpu placement="static">8</vcpu>
  <os>
    <type arch="x86_64" machine="pc-q35-5.2">hvm</type>
    <loader readonly="yes" type="pflash">/usr/share/qemu/ovmf-x86_64-ms-code.bin</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/RDPWindows_VARS.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state="on"/>
      <vapic state="on"/>
      <spinlocks state="on" retries="8191"/>
    </hyperv>
    <vmport state="off"/>
  </features>
  <cpu mode="host-model" check="partial">
    <topology sockets="1" dies="1" cores="4" threads="2"/>
  </cpu>
  <clock offset="localtime">
    <timer name="hpet" present="yes"/>
    <timer name="hypervclock" present="yes"/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw"/>
      <source file="/path/to/Windows.iso"/>
      <target dev="sdb" bus="sata"/>
      <readonly/>
      <address type="drive" controller="0" bus="0" target="0" unit="1"/>
    </disk>
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw"/>
      <source file="/path/to/virtio-win-0.1.208.iso"/>
      <target dev="sdc" bus="sata"/>
      <readonly/>
      <address type="drive" controller="0" bus="0" target="0" unit="2"/>
    </disk>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2"/>
      <source file="/var/lib/libvirt/images/win10-office.qcow2"/>
      <target dev="vda" bus="virtio"/>
      <boot order="1"/>
      <address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
    </disk>
    <controller type="usb" index="0" model="qemu-xhci" ports="15">
      <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
    </controller>
    <controller type="sata" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
    </controller>
    <controller type="pci" index="0" model="pcie-root"/>
    <controller type="pci" index="1" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="1" port="0x10"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
    </controller>
    <controller type="pci" index="2" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="2" port="0x11"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
    </controller>
    <controller type="pci" index="3" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="3" port="0x12"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
    </controller>
    <controller type="pci" index="4" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="4" port="0x13"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
    </controller>
    <controller type="pci" index="5" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="5" port="0x14"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
    </controller>
    <controller type="pci" index="6" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="6" port="0x15"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
    </controller>
    <controller type="virtio-serial" index="0">
      <address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
    </controller>
    <interface type="network">
      <mac address="52:54:00:77:ea:aa"/>
      <source network="default"/>
      <model type="e1000e"/>
      <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
    </interface>
    <interface type="network">
      <mac address="52:54:00:e8:2d:aa"/>
      <source network="link-local"/>
      <model type="virtio"/>
      <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
    </interface>
    <serial type="pty">
      <target type="isa-serial" port="0">
        <model name="isa-serial"/>
      </target>
    </serial>
    <console type="pty">
      <target type="serial" port="0"/>
    </console>
    <channel type="spicevmc">
      <target type="virtio" name="com.redhat.spice.0"/>
      <address type="virtio-serial" controller="0" bus="0" port="1"/>
    </channel>
    <input type="tablet" bus="usb">
      <address type="usb" bus="0" port="1"/>
    </input>
    <input type="mouse" bus="ps2"/>
    <input type="keyboard" bus="ps2"/>
    <graphics type="spice" autoport="yes">
      <listen type="address"/>
      <image compression="off"/>
      <gl enable="no"/>
    </graphics>
    <sound model="ich9">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
    </sound>
    <video>
      <model type="virtio" heads="1" primary="yes"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
    </video>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="2"/>
    </redirdev>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="3"/>
    </redirdev>
    <memballoon model="virtio">
      <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
    </memballoon>
  </devices>
</domain>

하지만 내 비디오 성능이 좋지 않습니다.쓸 수 있는하지만 확실히 사용하기 불편한데 어떻게 하면 더 좋은 성능을 얻을 수 있는지 알고 싶습니다. 나는 사용하려고https://github.com/Fmstrat/winapps, 약간 더 나은 성능을 제공하지만 시각적 버그가 있습니다. RDP와 xfreerdp를 사용해 보았지만 SPICE보다 낫지 않습니다. 이 Windows에 SPICE 게스트 도구를 설치했습니다.

답변1

현재 QEMU/KVM에서 가장 빠른 VGA는QXL, 적어도 일반적인 데스크톱 사용의 경우(3D 지원 없음). 당신은가상 기기귀하의 구성에서는 아마도 미래에는 3D를 지원하는 최선의 선택이 될 것입니다. 비디오를 다음과 같이 변경해야 합니다.

<video>
<model type='qxl' vram='65535' heads='1'>
</model>
</video>

물론 드라이버도 설치하세요. QXL 드라이버는 Spice-guest-tools에 포함되어 있습니다(여기를 확인하세요)스파이스 방문자 도구). spicy가상 머신 창 내부 및 외부에서 원활한 마우스 작업을 위해 virt-manager와 같은 클라이언트를 사용할 수도 있습니다 virt-viewer.

답변2

너가 아니라면GTK UI 새로 고침 빈도를 조정하기 위해 qemu를 다시 컴파일하십시오.또는 업스트림에서 조정하기로 결정하면 33fps 이상을 달성할 수 없습니다.마우스 움직임, 그게 바로 당신이 직면하고 있는 상황이라고 생각합니다(당신은 숫자를 제공하지 않았고 단지 의견만 제공했습니다).

호스트 비디오 그래픽과 디스플레이가 이미 만족스럽다고 가정할 때 가장 좋은 옵션은 다음과 같습니다.

  • qxl/spice이지만 호스트에서 RHEL을 실행하는 경우 EL9부터 제거됩니다. OL7.9에서 누락되었습니다. 우분투는 포기하지 않는 것 같습니다.

  • 가상 머신에 대한 원격 데스크톱 클라이언트

  • 다음과 같은 다양한 가상화 솔루션VMWare 플레이어

  • vnc/teamviewer는 가상 머신에 연결하고 로컬 커서 FPS 응답성을 유지하기 위해 원격 커서 보기를 비활성화하는 옵션을 제공합니다. TV는 LAN에서만 작동하도록 구성할 수 있으므로 인터넷에 노출되지 않으며 비디오 콘텐츠 스트리밍도 매우 잘됩니다.

관련 정보