[Bug 99457] Excessive CPU load by the xorg-server and GUI's hard lags

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Feb 9 09:41:20 UTC 2017


https://bugs.freedesktop.org/show_bug.cgi?id=99457

--- Comment #19 from Eugenij Shkrigunov <eshkrig at gmail.com> ---
I compiled with debugging xorg-server-1.18.4, xf86-video-ati-7.7.0,
mesa-12.0.1, tigervnc-1.7.1 and run oprofile.

Here are the data for the 5 minutes of inactivity of the KDM login screen:

opreport --long-filenames /usr/bin/Xorg

   909697 100.000 /usr/bin/Xorg
        CPU_CLK_UNHALT...|
          samples|      %|
        ------------------
           905321 99.5190 /proc/kallsyms
             1379  0.1516 /usr/lib64/mesa/radeonsi_dri.so
              904  0.0994 /usr/lib64/xorg/modules/extensions/libvnc.so
              654  0.0719 /usr/bin/Xorg
              476  0.0523 /lib64/libc-2.23.so
              249  0.0274 /usr/lib64/xorg/modules/drivers/radeon_drv.so
              176  0.0193 /lib64/libpthread-2.23.so
              122  0.0134 /usr/lib64/xorg/modules/libglamoregl.so
              107  0.0118 /usr/lib64/libpixman-1.so.0.34.0
               78  0.0086 /usr/lib64/libdrm.so.2.4.0
               53  0.0058 /usr/lib64/libdrm_radeon.so.1.0.1
               51  0.0056 [vdso] (tgid:5004
range:0x7ffd70577000-0x7ffd70578fff)
               25  0.0027 /lib64/libm-2.23.so
               25  0.0027
/usr/lib64/gcc/x86_64-pc-linux-gnu/4.9.4/libstdc++.so.6.0.20
               24  0.0026 /usr/lib64/libGL.so.1.2.0
               21  0.0023 /usr/lib64/xorg/modules/input/evdev_drv.so
               13  0.0014 /usr/lib64/xorg/modules/libfb.so
               11  0.0012 /lib64/libudev.so.1.6.4
                7 7.7e-04 /usr/lib64/libglapi.so.0.0.0
                1 1.1e-04 /lib64/ld-2.23.so


opreport --long-filenames --symbols /proc/kallsyms

samples  %        image name               symbol name
747823   82.6031  /proc/kallsyms           delay_tsc
85053     9.3948  /proc/kallsyms           cail_reg_read
21208     2.3426  /proc/kallsyms           atom_get_src_int
9510      1.0505  /proc/kallsyms           atom_put_dst
8068      0.8912  /proc/kallsyms           atom_execute_table_locked
5636      0.6225  /proc/kallsyms           atom_op_move
3921      0.4331  /proc/kallsyms           atom_op_jump
3008      0.3323  /proc/kallsyms           atom_op_compare
2492      0.2753  /proc/kallsyms           atom_op_clear
1824      0.2015  /proc/kallsyms           atom_op_calltable
1260      0.1392  /proc/kallsyms           atom_op_add
1109      0.1225  /proc/kallsyms           atom_op_sub
1080      0.1193  /proc/kallsyms           atom_op_test
891       0.0984  /proc/kallsyms           atom_op_setport
676       0.0747  /proc/kallsyms           atom_op_or
675       0.0746  /proc/kallsyms           atom_op_shift_left
670       0.0740  /proc/kallsyms           atom_op_setfbbase
543       0.0600  /proc/kallsyms           atom_op_and
525       0.0580  /proc/kallsyms           atom_op_mask
426       0.0471  /proc/kallsyms           atom_op_delay
354       0.0391  /proc/kallsyms           __udelay
344       0.0380  /proc/kallsyms           apic_timer_interrupt
334       0.0369  /proc/kallsyms           atom_get_src_direct
311       0.0344  /proc/kallsyms           read_tsc
244       0.0270  /proc/kallsyms           _raw_spin_lock
224       0.0247  /proc/kallsyms           atom_op_setdatablock
177       0.0196  /proc/kallsyms           __ww_mutex_lock
173       0.0191  /proc/kallsyms           cail_reg_write
163       0.0180  /proc/kallsyms           _raw_spin_lock_irqsave
163       0.0180  /proc/kallsyms           update_blocked_averages
159       0.0176  /proc/kallsyms           ww_mutex_unlock
155       0.0171  /proc/kallsyms           task_tick_fair
148       0.0163  /proc/kallsyms           radeon_crtc_load_lut
106       0.0117  /proc/kallsyms           radeon_get_external_encoder


opreport --long-filenames --symbols /usr/lib64/mesa/radeonsi_dri.so

samples  %        image name               symbol name
81        5.8781  /usr/lib64/mesa/radeonsi_dri.so radeon_cs_context_cleanup
73        5.2975  /usr/lib64/mesa/radeonsi_dri.so radeon_drm_cs_add_buffer
40        2.9028  /usr/lib64/mesa/radeonsi_dri.so
si_buffer_resources_begin_new_cs
39        2.8302  /usr/lib64/mesa/radeonsi_dri.so
radeon_drm_cs_emit_ioctl_oneshot
33        2.3948  /usr/lib64/mesa/radeonsi_dri.so si_draw_vbo
32        2.3222  /usr/lib64/mesa/radeonsi_dri.so surf_drm_to_winsys
31        2.2496  /usr/lib64/mesa/radeonsi_dri.so surf_winsys_to_drm
30        2.1771  /usr/lib64/mesa/radeonsi_dri.so _mesa_Flush
27        1.9594  /usr/lib64/mesa/radeonsi_dri.so radeon_drm_cs_emit_ioctl
26        1.8868  /usr/lib64/mesa/radeonsi_dri.so si_blitter_begin
25        1.8142  /usr/lib64/mesa/radeonsi_dri.so radeon_drm_cs_flush
24        1.7417  /usr/lib64/mesa/radeonsi_dri.so
si_all_descriptors_begin_new_cs
23        1.6691  /usr/lib64/mesa/radeonsi_dri.so si_upload_descriptors
22        1.5965  /usr/lib64/mesa/radeonsi_dri.so _mesa_BindTexture
22        1.5965  /usr/lib64/mesa/radeonsi_dri.so si_shader_select
21        1.5239  /usr/lib64/mesa/radeonsi_dri.so radeon_lookup_buffer
19        1.3788  /usr/lib64/mesa/radeonsi_dri.so r600_flush_from_st
19        1.3788  /usr/lib64/mesa/radeonsi_dri.so st_glFlush
17        1.2337  /usr/lib64/mesa/radeonsi_dri.so
_mesa_error_check_format_and_type
17        1.2337  /usr/lib64/mesa/radeonsi_dri.so r600_texture_create_object
17        1.2337  /usr/lib64/mesa/radeonsi_dri.so si_make_texture_descriptor
17        1.2337  /usr/lib64/mesa/radeonsi_dri.so si_update_shaders
16        1.1611  /usr/lib64/mesa/radeonsi_dri.so u_upload_alloc
16        1.1611  /usr/lib64/mesa/radeonsi_dri.so util_copy_framebuffer_state
15        1.0885  /usr/lib64/mesa/radeonsi_dri.so _mesa_TexSubImage2D
15        1.0885  /usr/lib64/mesa/radeonsi_dri.so si_set_framebuffer_state
14        1.0160  /usr/lib64/mesa/radeonsi_dri.so _mesa_get_current_tex_object
14        1.0160  /usr/lib64/mesa/radeonsi_dri.so radeon_drm_cs_sync_flush
14        1.0160  /usr/lib64/mesa/radeonsi_dri.so si_emit_framebuffer_state


opreport --long-filenames --symbols
/usr/lib64/xorg/modules/extensions/libvnc.so

samples  %        image name               symbol name
43        4.8206  /usr/lib64/xorg/modules/extensions/libvnc.so
vncWriteBlockHandler
32        3.5874  /usr/lib64/xorg/modules/extensions/libvnc.so
vncGetScreenCount
31        3.4753  /usr/lib64/xorg/modules/extensions/libvnc.so
vncCallWriteBlockHandlers
27        3.0269  /usr/lib64/xorg/modules/extensions/libvnc.so
rfb::Timer::checkTimeouts()
25        2.8027  /usr/lib64/xorg/modules/extensions/libvnc.so
rfb::IntParameter::operator int() const
24        2.6906  /usr/lib64/xorg/modules/extensions/libvnc.so
std::_List_base<network::Socket*, std::allocator<network::Socket*> >::_List_
21        2.3543  /usr/lib64/xorg/modules/extensions/libvnc.so
XserverDesktop::writeBlockHandler(fd_set*, timeval**)
20        2.2422  /usr/lib64/xorg/modules/extensions/libvnc.so
XserverDesktop::readWakeupHandler(fd_set*, int)
20        2.2422  /usr/lib64/xorg/modules/extensions/libvnc.so
std::_List_base<network::Socket*, std::allocator<network::Socket*> >::_List_
20        2.2422  /usr/lib64/xorg/modules/extensions/libvnc.so
std::list<network::Socket*, std::allocator<network::Socket*> >::list()
20        2.2422  /usr/lib64/xorg/modules/extensions/libvnc.so
std::list<network::TcpListener*, std::allocator<network::TcpListener*> >::en
20        2.2422  /usr/lib64/xorg/modules/extensions/libvnc.so
std::list<rfb::Timer*, std::allocator<rfb::Timer*> >::empty() const
19        2.1300  /usr/lib64/xorg/modules/extensions/libvnc.so vncXUnionRegion
18        2.0179  /usr/lib64/xorg/modules/extensions/libvnc.so
network::SocketListener::getFd()
18        2.0179  /usr/lib64/xorg/modules/extensions/libvnc.so
rfb::VNCServerST::add_changed(rfb::Region const&)
17        1.9058  /usr/lib64/xorg/modules/extensions/libvnc.so
std::list<network::TcpListener*, std::allocator<network::TcpListener*> >::be
16        1.7937  /usr/lib64/xorg/modules/extensions/libvnc.so
std::allocator<std::_List_node<network::Socket*> >::allocator()
15        1.6816  /usr/lib64/xorg/modules/extensions/libvnc.so
std::_List_iterator<network::TcpListener*>::operator!=(std::_List_iterator<n
15        1.6816  /usr/lib64/xorg/modules/extensions/libvnc.so
vncHooksBlockHandler
14        1.5695  /usr/lib64/xorg/modules/extensions/libvnc.so
std::_List_iterator<rfb::Timer*>::_List_iterator(std::__detail::_List_node_b
13        1.4574  /usr/lib64/xorg/modules/extensions/libvnc.so
std::_List_base<rfb::Timer*, std::allocator<rfb::Timer*> >::_M_get_Tp_alloca
13        1.4574  /usr/lib64/xorg/modules/extensions/libvnc.so
std::_List_iterator<network::Socket*>::_List_iterator()
13        1.4574  /usr/lib64/xorg/modules/extensions/libvnc.so
std::list<network::Socket*, std::allocator<network::Socket*> >::clear()
13        1.4574  /usr/lib64/xorg/modules/extensions/libvnc.so
vncCallReadWakeupHandlers
12        1.3453  /usr/lib64/xorg/modules/extensions/libvnc.so
XserverDesktop::readBlockHandler(fd_set*, timeval**)
12        1.3453  /usr/lib64/xorg/modules/extensions/libvnc.so
std::list<rfb::VNCSConnectionST*, std::allocator<rfb::VNCSConnectionST*> >::
12        1.3453  /usr/lib64/xorg/modules/extensions/libvnc.so vncAddChanged
11        1.2332  /usr/lib64/xorg/modules/extensions/libvnc.so
__gnu_cxx::new_allocator<std::_List_node<network::Socket*> >::new_allocator(
11        1.2332  /usr/lib64/xorg/modules/extensions/libvnc.so
rfb::VNCServerST::checkTimeouts()
11        1.2332  /usr/lib64/xorg/modules/extensions/libvnc.so
std::list<rfb::Timer*, std::allocator<rfb::Timer*> >::begin()
10        1.1211  /usr/lib64/xorg/modules/extensions/libvnc.so rfb::Timer**
std::__addressof<rfb::Timer*>(rfb::Timer*&)
10        1.1211  /usr/lib64/xorg/modules/extensions/libvnc.so
rfb::Timer::insertTimer(rfb::Timer*)
10        1.1211  /usr/lib64/xorg/modules/extensions/libvnc.so
rfb::Timer::start(int)
10        1.1211  /usr/lib64/xorg/modules/extensions/libvnc.so
rfb::VNCServerST::getSockets(std::list<network::Socket*, std::allocator<netw
10        1.1211  /usr/lib64/xorg/modules/extensions/libvnc.so
std::_List_iterator<rfb::VNCSConnectionST*>::_List_iterator()
10        1.1211  /usr/lib64/xorg/modules/extensions/libvnc.so
std::list<network::Socket*, std::allocator<network::Socket*> >::begin()


opreport --long-filenames --symbols
/usr/lib64/xorg/modules/drivers/radeon_drv.so

samples  %        image name               symbol name
73       29.4355  /usr/lib64/xorg/modules/drivers/radeon_drv.so
drmmode_set_desired_modes
59       23.7903  /usr/lib64/xorg/modules/drivers/radeon_drv.so
drmmode_set_mode_major
33       13.3065  /usr/lib64/xorg/modules/drivers/radeon_drv.so
RADEONBlockHandler_KMS
20        8.0645  /usr/lib64/xorg/modules/drivers/radeon_drv.so
drmmode_do_crtc_dpms
13        5.2419  /usr/lib64/xorg/modules/drivers/radeon_drv.so
drmmode_crtc_gamma_set
12        4.8387  /usr/lib64/xorg/modules/drivers/radeon_drv.so
radeon_flush_callback
9         3.6290  /usr/lib64/xorg/modules/drivers/radeon_drv.so
drm_wakeup_handler
9         3.6290  /usr/lib64/xorg/modules/drivers/radeon_drv.so
radeon_cs_flush_indirect
8         3.2258  /usr/lib64/xorg/modules/drivers/radeon_drv.so
RADEONBlockHandler_oneshot
5         2.0161  /usr/lib64/xorg/modules/drivers/radeon_drv.so
drmmode_can_use_hw_cursor
5         2.0161  /usr/lib64/xorg/modules/drivers/radeon_drv.so
drmmode_output_dpms
2         0.8065  /usr/lib64/xorg/modules/drivers/radeon_drv.so
drmmode_handle_transform

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.x.org/archives/xorg-driver-ati/attachments/20170209/58125fd0/attachment.html>


More information about the xorg-driver-ati mailing list