[OE-core] [PATCH 03/13] qemu: switch to '-vga std' emulated hardware from vmware/cirrus for x86/mips

Changqing Li changqing.li at windriver.com
Thu Oct 10 06:16:18 UTC 2019


Hi,

After switch from -vga vmware to -vga std (use qemux86-64), start image 
by "runqemu nographic",

Memory used by process Xorg raised a lot,   for my image,   from ~%7 to 
~%34 (check by ps aux --sort -rss)

also check memory by command "systemctl status xserver-nodm", raised 
from ~60M to ~120M.

with the high raise of memory usage of Xorg, when run oe-test on the 
target,  OOM is happened like:

[ 1038.221438]*Out of memory*: Killed process 180 (Xorg) 
total-vm:335368kB, anon-rss:68824kB, file-rss:0kB, shmem-rss:140kB


Also test with poky distro,  and image core-image-sato, also installed 
procps.

1. "ps aux --sort -rss":  Xorg from  ~3.6%  to ~ 17.4%

2. "systemctl status xserver-nodm":  from ~65M to ~131M


Any idea about how to resolve this problem?  do we really need unify all 
boards to -vga=std? Thanks.


On 8/30/19 8:49 PM, Alexander Kanavin wrote:
> This is the qemu default since qemu 2.2, is generally supported better,
> and is recommended by upstream. It also has already been in use for arm/risc
> and ovmf.
>
> Additional information:
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=13466
> https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
>
> '-vga virtio' emulated hardware remains in use when virgl is enabled via a runqemu override.
>
> Also, adjust the error whitelist, as there is a number of new messages
> coming from the drivers that are not actual errors.
>
> Signed-off-by: Alexander Kanavin <alex.kanavin at gmail.com>
> ---
>   meta/conf/machine/include/qemuboot-mips.inc | 2 +-
>   meta/conf/machine/include/qemuboot-x86.inc  | 2 +-
>   meta/conf/machine/qemux86-64.conf           | 1 +
>   meta/conf/machine/qemux86.conf              | 1 +
>   meta/lib/oeqa/runtime/cases/parselogs.py    | 4 ++++
>   scripts/runqemu                             | 6 ------
>   6 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/meta/conf/machine/include/qemuboot-mips.inc b/meta/conf/machine/include/qemuboot-mips.inc
> index 1c2b532b482..978820a2e0b 100644
> --- a/meta/conf/machine/include/qemuboot-mips.inc
> +++ b/meta/conf/machine/include/qemuboot-mips.inc
> @@ -2,6 +2,6 @@
>   IMAGE_CLASSES += "qemuboot"
>   QB_MACHINE = "-machine malta"
>   QB_KERNEL_CMDLINE_APPEND = "console=ttyS0 console=tty"
> -QB_OPT_APPEND = "-vga cirrus -show-cursor -usb -device usb-tablet"
> +QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet"
>   # Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
>   QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
> diff --git a/meta/conf/machine/include/qemuboot-x86.inc b/meta/conf/machine/include/qemuboot-x86.inc
> index 3931b0f0fb3..495418fa04b 100644
> --- a/meta/conf/machine/include/qemuboot-x86.inc
> +++ b/meta/conf/machine/include/qemuboot-x86.inc
> @@ -9,7 +9,7 @@ QB_CPU_KVM_x86-64 = "-cpu core2duo"
>   QB_AUDIO_DRV = "alsa"
>   QB_AUDIO_OPT = "-soundhw ac97,es1370"
>   QB_KERNEL_CMDLINE_APPEND = "vga=0 uvesafb.mode_option=${UVESA_MODE} oprofile.timer=1 uvesafb.task_timeout=-1"
> -QB_OPT_APPEND = "-vga vmware -show-cursor -usb -device usb-tablet"
> +QB_OPT_APPEND = "-show-cursor -usb -device usb-tablet"
>   # Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
>   QB_OPT_APPEND += "-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0"
>   
> diff --git a/meta/conf/machine/qemux86-64.conf b/meta/conf/machine/qemux86-64.conf
> index 4b50e664e42..7c70dbddf52 100644
> --- a/meta/conf/machine/qemux86-64.conf
> +++ b/meta/conf/machine/qemux86-64.conf
> @@ -24,6 +24,7 @@ XSERVER = "xserver-xorg \
>              xf86-video-fbdev \
>              xf86-video-vmware \
>              xf86-video-modesetting \
> +           xf86-video-vesa \
>              xserver-xorg-module-libint10 \
>              "
>   
> diff --git a/meta/conf/machine/qemux86.conf b/meta/conf/machine/qemux86.conf
> index 3832302f07b..8e0da820761 100644
> --- a/meta/conf/machine/qemux86.conf
> +++ b/meta/conf/machine/qemux86.conf
> @@ -24,6 +24,7 @@ XSERVER = "xserver-xorg \
>              xf86-video-fbdev \
>              xf86-video-vmware \
>              xf86-video-modesetting \
> +           xf86-video-vesa \
>              xserver-xorg-module-libint10 \
>              "
>   
> diff --git a/meta/lib/oeqa/runtime/cases/parselogs.py b/meta/lib/oeqa/runtime/cases/parselogs.py
> index 19c9c52a0a9..15343d7abbe 100644
> --- a/meta/lib/oeqa/runtime/cases/parselogs.py
> +++ b/meta/lib/oeqa/runtime/cases/parselogs.py
> @@ -83,6 +83,10 @@ qemux86_common = [
>       'amd_nb: Cannot enumerate AMD northbridges',
>       'uvesafb: 5000 ms task timeout, infinitely waiting',
>       'tsc: HPET/PMTIMER calibration failed',
> +    "modeset(0): Failed to initialize the DRI2 extension",
> +    "uvesafb: cannot reserve video memory at",
> +    "uvesafb: probe of uvesafb.0 failed with error",
> +    "glamor initialization failed",
>   ] + common_errors
>   
>   ignore_errors = {
> diff --git a/scripts/runqemu b/scripts/runqemu
> index 7705b2b60e3..b5200106244 100755
> --- a/scripts/runqemu
> +++ b/scripts/runqemu
> @@ -145,8 +145,6 @@ class BaseConfig(object):
>           # to be added with -drive if=pflash.
>           # Found in the same places as the rootfs, with or without one of
>           # these suffices: qcow2, bin.
> -        # Setting one also adds "-vga std" because that is all that
> -        # OVMF supports.
>           self.ovmf_bios = []
>           # When enrolling default Secure Boot keys, the hypervisor
>           # must provide the Platform Key and the first Key Exchange Key
> @@ -1283,10 +1281,6 @@ class BaseConfig(object):
>           for ovmf in self.ovmf_bios:
>               format = ovmf.rsplit('.', 1)[-1]
>               self.qemu_opt += ' -drive if=pflash,format=%s,file=%s' % (format, ovmf)
> -        if self.ovmf_bios:
> -            # OVMF only supports normal VGA, i.e. we need to override a -vga vmware
> -            # that gets added for example for normal qemux86.
> -            self.qemu_opt += ' -vga std'
>   
>           self.qemu_opt += ' ' + self.qemu_opt_script
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20191010/53a671d3/attachment.html>


More information about the Openembedded-core mailing list