[Nouveau] qemu -display sdl,gl=on also eats CPU

Andrew Randrianasulu randrianasulu at gmail.com
Mon Aug 17 13:44:28 UTC 2020


I rebuild mesa with debug symbols, and now top functions using CPU looks like this:


CPU: AMD64 family15h, speed 3800 MHz (estimated)
Counted CPU_CLK_UNHALTED events (CPU Clocks not Halted) with a unit mask of 0x00 (No unit mask) count 100000
samples  %        image name               symbol name
-------------------------------------------------------------------------------
222978   45.1489  nouveau_dri.so           nv50_bufctx_fence
  222978   100.000  nouveau_dri.so           nv50_bufctx_fence [self]
-------------------------------------------------------------------------------
150576   30.4889  libdrm_nouveau.so.2.0.0  /usr/X11R7/lib/libdrm_nouveau.so.2.0.0
  150576   100.000  libdrm_nouveau.so.2.0.0  /usr/X11R7/lib/libdrm_nouveau.so.2.0.0 [self]
-------------------------------------------------------------------------------
39524     8.0029  libpixman-1.so.0.38.0    /usr/X11R7/lib/libpixman-1.so.0.38.0
  39524    100.000  libpixman-1.so.0.38.0    /usr/X11R7/lib/libpixman-1.so.0.38.0 [self]
-------------------------------------------------------------------------------
28094     5.6885  libc-2.30.so             memcpy
  28094    100.000  libc-2.30.so             memcpy [self]
-------------------------------------------------------------------------------
13758     2.7857  kallsyms                 dma_direct_alloc_pages
  13758    100.000  kallsyms                 dma_direct_alloc_pages [self]
-------------------------------------------------------------------------------
2508      0.5078  qemu-system-x86_64       /usr/bin/qemu-system-x86_64
  2508     100.000  qemu-system-x86_64       /usr/bin/qemu-system-x86_64 [self]
-------------------------------------------------------------------------------
1953      0.3954  ttm                      /ttm
  1953     100.000  ttm                      /ttm [self]
-------------------------------------------------------------------------------
1661      0.3363  nouveau                  /nouveau
  1661     100.000  nouveau                  /nouveau [self]
-------------------------------------------------------------------------------
1462      0.2960  kallsyms                 find_next_iomem_res
  1462     100.000  kallsyms                 find_next_iomem_res [self]
-------------------------------------------------------------------------------
1355      0.2744  kvm_amd                  /kvm_amd
  1355     100.000  kvm_amd                  /kvm_amd [self]
-------------------------------------------------------------------------------
1273      0.2578  kvm                      /kvm
  1273     100.000  kvm                      /kvm [self]
-------------------------------------------------------------------------------
1208      0.2446  ld-2.30.so               _dl_update_slotinfo
  1208     100.000  ld-2.30.so               _dl_update_slotinfo [self]
-------------------------------------------------------------------------------
1126      0.2280  kallsyms                 atomic_try_cmpxchg
  1126     100.000  kallsyms                 atomic_try_cmpxchg [self]
-------------------------------------------------------------------------------
992       0.2009  libc-2.30.so             cfree at GLIBC_2.0
  992      100.000  libc-2.30.so             cfree at GLIBC_2.0 [self]
-------------------------------------------------------------------------------
833       0.1687  libc-2.30.so             malloc
  833      100.000  libc-2.30.so             malloc [self]
-------------------------------------------------------------------------------
810       0.1640  libc-2.30.so             _int_free
  810      100.000  libc-2.30.so             _int_free [self]
-------------------------------------------------------------------------------
772       0.1563  kallsyms                 __x86_indirect_thunk_rax
  772      100.000  kallsyms                 __x86_indirect_thunk_rax [self]
-------------------------------------------------------------------------------


CPU usage rose from 40% to 80% (at 1.4Ghz) over 6 hours of guest's uptime.

----------  Пересланное сообщение  ----------

Тема: Re: [Nouveau] qemu -display sdl,gl=on also eats CPU
Дата: Понедельник 17 августа 2020
Отправитель: Andrew Randrianasulu <randrianasulu at gmail.com>
Получатель:  Ilia Mirkin <imirkin at alum.mit.edu>, nouveau at lists.freedesktop.org

В сообщении от Monday 17 August 2020 08:09:37 вы написали:
> The DDX eating CPU isn't intrinsically bad. Did you check where perf
> says the CPU time is going? Could be doing copies/etc.

I think Xorg ended up eating ~13% CPU  after I quit most programs, but it 
was definitely better than much higher CPU usage before your patches.

I saw no additional debug messages in X log, so probably you covered 
my specific case well.

qemu was eating CPU in  nouveau_dri.so/libdrm_nouveau.so.2.0.0,
so I suspected something like 'too many error reports from vblanks' 
may happen there, too.

Unfortunately, my standard build command for mesa included --strip,
so opreport -c was not giving any additional details ...

I just recompiled DDX again with if 0'ed debug message, will see how 
it works alone, and then retry mesa build/qemu long-uptime testing ...

> 
> On Mon, Aug 17, 2020 at 12:52 AM Andrew Randrianasulu
> <randrianasulu at gmail.com> wrote:
> >
> > I was testing Ilia's patches for ddx, and while they definitely helped for Xorg itself,
> > qemu still eats a lot of CPU if launched like this
> >
> > qemu-system-x86_64 -cdrom ~/Downloads/ISO/slax-English-US-7.0.8-x86_64.iso -m 1G -display sdl,gl=on -enable-kvm
> >
> > and left for few hours.
> >
> > top - 07:38:01 up 18:05,  2 users,  load average: 2,00, 1,89, 1,83
> > Tasks: 224 total,   3 running, 221 sleeping,   0 stopped,   0 zombie
> > %Cpu(s): 40,6 us,  6,1 sy,  0,3 ni, 49,2 id,  0,8 wa,  0,0 hi,  2,9 si,  0,0 st
> > MiB Mem :  11875,3 total,   3535,7 free,   3339,3 used,   5000,3 buff/cache
> > MiB Swap:   1145,0 total,   1131,2 free,     13,8 used.   4874,7 avail Mem
> >
> >   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
> >  6215 guest     20   0 1455160 951768  45560 R  99,3   7,8 710:44.44 qemu-system-x86
> > 12655 guest     20   0 2459848   1,5g 126708 R  59,1  12,6 217:53.21 seamonkey
> >  1991 root      20   0  178112 109500  28840 S  20,9   0,9 187:20.05 Xorg
> >  2068 guest     20   0  104932  51660  30764 S   5,6   0,4  54:08.99 ktorrent
> >  6031 root      20   0       0      0      0 I   2,0   0,0   0:20.24 kworker/0:3-events
> >  3697 guest     20   0  382432  20308  13696 S   1,7   0,2  91:38.13 xmms
> >  2064 guest     20   0   55868  37048  23976 S   1,3   0,3   2:38.47 konsole
> >  2319 guest     20   0   40160  21248  18548 S   1,3   0,2  12:36.63 gkrellm
> >  5853 root      20   0       0      0      0 I   0,7   0,0   0:07.21 kworker/2:2-events
> >
> > opreport after  operf --pid 6215 said:
> >
> > opreport
> > Using /home/guest/botva/src/xf86-video-nouveau/oprofile_data/samples/ for samples directory.
> > CPU: AMD64 family15h, speed 3800 MHz (estimated)
> > Counted CPU_CLK_UNHALTED events (CPU Clocks not Halted) with a unit mask of 0x00 (No unit mask) count 100000
> > CPU_CLK_UNHALT...|
> >   samples|      %|
> > ------------------
> >    260163 100.000 qemu-system-x86_64
> >         CPU_CLK_UNHALT...|
> >           samples|      %|
> >         ------------------
> >            144120 55.3960 nouveau_dri.so
> >             87990 33.8211 libdrm_nouveau.so.2.0.0
> >             11783  4.5291 libpixman-1.so.0.38.0
> >              7884  3.0304 kallsyms
> >              5310  2.0410 libc-2.30.so
> >               689  0.2648 ld-2.30.so
> >               519  0.1995 nouveau
> >               501  0.1926 qemu-system-x86_64
> >               456  0.1753 ttm
> >               239  0.0919 kvm
> >               211  0.0811 kvm_amd
> >                81  0.0311 libpthread-2.30.so
> >                76  0.0292 drm
> >                49  0.0188 libSDL2-2.0.so.0.12.0
> >                43  0.0165 libxcb.so.1.1.0
> >                36  0.0138 libGL.so.1.2.0
> >                31  0.0119 libX11.so.6.3.0
> >                24  0.0092 snd_pcm
> >                23  0.0088 snd_hda_codec
> >                20  0.0077 libglib-2.0.so.0.5800.1
> >                11  0.0042 snd_timer
> >                 9  0.0035 libglapi.so.0.0.0
> >                 8  0.0031 libdrm.so.2.4.0
> >                 7  0.0027 snd_aloop
> >                 7  0.0027 snd_hda_intel
> >                 7  0.0027 libxshmfence.so.1.0.0
> >                 7  0.0027 libgcc_s.so.1
> >                 5  0.0019 [vdso] (tgid:6215 range:0xf7f9f000-0xf7f9ffff)
> >                 5  0.0019 snd_hda_core
> >                 4  0.0015 r8169
> >                 3  0.0012 libahci
> >                 2 7.7e-04 ohci_hcd
> >                 2 7.7e-04 libxcb-present.so.0.0.0
> >                 1 3.8e-04 libatomic.so.1.1.0
> >
> > so, may be similar fix needed for mesa, too?
> >
> > ow, I started it in ddx src directory :} need to cleanup there. But at least data is 100
> >
> > _______________________________________________
> > Nouveau mailing list
> > Nouveau at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/nouveau
> 



-------------------------------------------------------


More information about the Nouveau mailing list