더 나은 2D 그래픽 성능을 얻기 위해 KVM에서 Android-x86을 실행하는 방법은 무엇입니까?

더 나은 2D 그래픽 성능을 얻기 위해 KVM에서 Android-x86을 실행하는 방법은 무엇입니까?

가상 머신 관리자를 통해 QEMU/KVM에서 Android-x86을 실행하고 있습니다. 이것은 이전에 VMWare를 사용하여 Windows 호스트에서 실행한 가상 머신입니다. 이제 Linux QEMU/KVM에서 실행할 수 있지만 2D 성능은매우아주 나쁜.

다음은 가상 머신 코드( /etc/libvirt/qemu/generic.xml)입니다.

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit generic
or other application using the libvirt API.
-->

<domain type='kvm'>
  <name>generic</name>
  <uuid>386c966a-0cdf-427d-aa24-7fe71583ab85</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state='off'/>
  </features>
  <cpu mode='host-model' check='partial'>
    <model fallback='allow'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </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/sbin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='vmdk'/>
      <source file='/vms/android-x86-6.0-rc1.vmdk'/>
      <target dev='sda' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </controller>
    <interface type='direct'>
      <mac address='52:54:00:06:96:fd'/>
      <source dev='enp10s0' mode='bridge'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </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='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='spice' autoport='yes'>
      <listen type='address'/>
      <gl enable='no' rendernode='/dev/dri/by-path/pci-0000:01:00.0-render'/>
    </graphics>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='131072' vram='131072' vgamem='131072' heads='1' primary='yes'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='1'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </memballoon>
  </devices>
</domain>

VMVGA전에는 카드를 써봤는데 읽어본 후에 는여기QXL코드에 표시된 대로 Spice 로 변경 하고 활성화했습니다. 또한 128MB의 가상 비디오 메모리를 수동으로 할당하고 호스트를 다시 시작했습니다.

그럼에도 불구하고 2D 그래픽은 고통스러울 정도로 느립니다. VMWare를 설치하거나 두 번째 그래픽 카드를 구입하는 것 외에 다른 해결책이 있습니까?

[편집]: 내 하드웨어는 8GB RAM 및 R9 280x GPU(AMD GCN 1.0, 1070Mhz, 3GB GDDR5)입니다. 그리고 VMWare에서의 성능이 너무 좋기 때문에 소프트웨어 문제라고 확신합니다. 저는 오픈 소스 AMDGPU 드라이버가 있는 호스트 시스템으로 Arch Linux 64비트를 사용하고 있습니다.

답변1

2D 그래픽 성능은본질적으로qcow2 디스크 이미지를 SSD로 옮겼을 때 상황이 개선되었습니다.

하드 드라이브로 다시 옮겼더니 속도가 다시 느려졌습니다. 다른 Android-x86 설치(32비트 및 64비트)에서도 테스트되었습니다. 확인됨.

왜 그런지 모르겠어.

답변2

언급할 만한 평판은 없지만 2021 버전과 VMWare 드라이버는 여전히 Windows 및 Linux의 Android x86에 가장 적합한 선택입니다(저는 9.0r2-k49를 사용하고 있습니다). Virtualbox 드라이버는 엉망이고, QEMU는 Windows에서 장애물처럼 실행되고, Linux의 virtio-vga는 괜찮은 성능을 제공하지만 화면이 찢어지는 문제가 있습니다.

내 생각엔 virgvulkan이 미래를 위한 솔루션이 될 수 있을 것 같아

관련 정보