2

I'm running Android-x86 in QEMU/KVM by means of Virtual Machine Manager. This is a virtual machine I previously ran from a Windows host with VMWare. I managed to run it in Linux QEMU/KVM for now, but the 2D performance is very very bad.

Here's the vm code (/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>

I tried a VMVGA card previously but after reading here I changed it to QXL and enabled Spice, as indicated in the code. Also I manually assigned 128MB of virtual graphics memory and rebooted the host.

Still, 2D graphics are very sluggish. Is there any solution, apart from installing VMWare or buying a second graphics card?

[Edit]: My hardware is 8GB of RAM and the R9 280x GPU (AMD GCN 1.0, 1070 Mhz, 3GB GDDR5). Also since the performance was very good under VMWare, I'm convinced this is a software issue. I'm using Arch Linux 64-bit as host with the open-source AMDGPU drivers.

  • How much RAM and graphics RAM do you have? 64-bit or 32-bit? What kind of graphics card? – cat Jun 18 '17 at 3:10
  • It kind of sounds like your graphics card's RAM is exhausted, or you are using an integrated mobile graphics card, like Intel integrated. Your integrated graphics and the ~500MB of main memory it gets would be forced to process both your desktop and the desktop of the VM at the same time, and that might be part of the cause. – cat Jun 18 '17 at 3:12
  • @cat I just updated the question to address these. – Marc.2377 Jun 18 '17 at 17:40
0

The 2d graphics performance was substantially improved when I moved the qcow2 disk image to an SSD.

I moved it back to HDD and it was slow again. Tested with other Android-x86 installations as well (both 32-bit and 64-bit). Confirmed.

No clue why.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.