On Wed, 29 Apr 2015 07:58:02 -0700 Marc MERLIN <[email protected]> said:

thats not a tight loop - it's asleep for 0.016 seconds... or so - that's 60hz
refresh. that is the vsync event (and it's ONLY turned on when
rendering/animation is needed - ANY client updating its window will cause this
to happen as efl will schedule an update of the canvas the next vsync). 1/60th
of a second of sleep is an eternity for a cpu. so no - not in a tight loop.
what may be what you see is the compositor re-rendering the whole screen due to:

1. something updating (window? a gadget? some animation).
2. intel drivers not supporting buffer age and/or swap with region thus evas is
FORCED to do full re-draws of the whole screen
3. we moved almost everything into gl and thus we have very big vertex lists
now. every gadget in your shelf is part of the redraw queue. cedric was going to
add auto-buffering of evas objects like over a year ago and e moved to
everything in the same canvas assuming this would come - it didn't. this move
to everything in the same canvas is a necessity of moving to wayland regardless.
4. pager now has full previews and thus any update to any window causes the
pager to also update so this can limit partial update handling even if you have
buffer age/swap with region because it causes the update bounding box to
stretch over the update area and the shelf as both update - thus region is
larger.

> Since I upgraded to e19, and had to start over with a config built from
> scratch, it's using 20-30% CPU or so:
> 
>   PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
> 27929 merlin    22   2 1245m 160m  49m S  31.8  1.0 463:32.66 enlightenment
> 27701 root      20   0 1272m 231m 218m S  12.7  1.5 199:35.56 Xorg   
> 
> Any idea how to find out what is burning so much CPU?
> 
> Going from accelerated OpenGL to software rendering, takes CPU down from 30%
> to 13%. Better but still too high. Also, disappointing that HW rendering
> taxes my CPU more than software.
> 
> >From my Xorg, kernel 3.19:
> intel(0): Using Kernel Mode Setting driver: i915, version 1.6.0 20141121
> intel(0): SNA compiled: xserver-xorg-video-intel 2:2.99.917-1~exp1 (Vincent
> Cheng <[email protected]>) intel(0): Integrated Graphics Chipset: Intel(R) HD
> Graphics 4600 intel(0): [DRI2] Setup complete
> intel(0): [DRI2]   DRI driver: i965
> intel(0): [DRI2]   VDPAU driver: i965
> intel(0): direct rendering: DRI2 enabled
> intel(0): hardware support for Present enabled
> AIGLX: enabled GLX_MESA_copy_sub_buffer
> AIGLX: enabled GLX_ARB_create_context
> AIGLX: enabled GLX_ARB_create_context_profile
> AIGLX: enabled GLX_EXT_create_context_es2_profile
> AIGLX: enabled GLX_INTEL_swap_event
> AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
> AIGLX: enabled GLX_EXT_framebuffer_sRGB
> AIGLX: enabled GLX_ARB_fbconfig_float
> AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
> AIGLX: enabled GLX_ARB_create_context_robustness
> AIGLX: Loaded and initialized i965
> GLX: Initialized DRI2 GL provider for screen 0
> 
> 
> 
> It seems busy on this filehandle:
> enlighten 27929 merlin   28u   CHR              226,0      0t0
> 1117 /dev/dri/card0
> 
> Strace shows it's a tight loop like this:
> [pid 21309]      0.000087 futex(0x7fa4407b4540, FUTEX_WAKE_PRIVATE, 1) = 1
> [pid 21309]      0.000030 ioctl(28, 0xc018643a, 0x7fa42fee5b60) = 0
> [pid 21309]      0.000028 select(29, [28], [], [], {0, 100000}) = 1 (in [28],
> left {0, 83766}) [pid 21309]      0.016312 read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0
> \0\0\0\263\263\4\0\330\303\0\0Hm\230\0\0\0\0\0", 1024) = 32 [pid 21309]
> 0.000033 write(6, "\4\0\0\0", 4) = 4 [pid 21309]      0.000028 write(6, "*\0\0
> \0", 4) = 4 [pid 21309]      0.000026 futex(0x7fa4407b4540,
> FUTEX_WAKE_PRIVATE, 1) = 1 [pid 21309]      0.000024 ioctl(28, 0xc018643a,
> 0x7fa42fee5b60) = 0 [pid 21309]      0.000025 select(29, [28], [], [], {0,
> 100000}) = 1 (in [28], left {0, 83517}) [pid 21309]      0.016541 read(28, "\1
> \0\0\0 \0\0\0\0\0\0\0\0\0\0\0\263\263\4\0\373\4\1\0Im\230\0\0\0\0\0", 1024) =
> 32 [pid 21309]      0.000032 write(6, "\4\0\0\0", 4) = 4 [pid 21309]
> 0.000029 write(6, "*\0\0\0", 4) = 4 [pid 21309]      0.000034 futex
> (0x7fa4407b4540, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 21309]      0.000025 ioctl
> (28, 0xc018643a, 0x7fa42fee5b60) = 0 [pid 21309]      0.000024 select(29,
> [28], [], [], {0, 100000}) = 1 (in [28], left {0, 83543}) [pid 21309]
> 0.016527 read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\263\263\4\0\37F\1\0Jm\230\0
> \0\0\0\0", 1024) = 32 [pid 21309]      0.000039 write(6, "\4\0\0\0", 4) = 4
> [pid 21309]      0.000039 write(6, "*\0\0\0", 4) = 4 [pid 21309]
> 0.000038 futex(0x7fa4407b4540, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 21309]
> 0.000027 ioctl(28, 0xc018643a, 0x7fa42fee5b60) = 0 [pid 21309]      0.000031
> select(29, [28], [], [], {0, 100000}) = 1 (in [28], left {0, 83547}) [pid
> 21309]      0.016532 read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\263\263\4\0D
> \207\1\0Km\230\0\0\0\0\0", 1024) = 32 [pid 21309]      0.000061 write(6, "\4\0
> \0\0", 4) = 4 [pid 21309]      0.000043 write(6, "*\0\0\0", 4) = 4 [pid
> 21309]      0.000029 ioctl(28, 0xc018643a, 0x7fa42fee5b60) = 0 [pid
> 21309]      0.000031 select(29, [28], [], [], {0, 100000}) = 1 (in [28], left
> {0, 83595}) [pid 21309]      0.016475 read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0\0\0
> \0\263\263\4\0l\310\1\0Lm\230\0\0\0\0\0", 1024) = 32 [pid 21309]
> 0.000060 write(6, "\4\0\0\0", 4) = 4 [pid 21309]      0.000132 write(6, "*\0\0
> \0", 4) = 4 [pid 21309]      0.000045 futex(0x7fa4407b4540,
> FUTEX_WAKE_PRIVATE, 1) = 1 [pid 21309]      0.000057 ioctl(28, 0xc018643a,
> 0x7fa42fee5b60) = 0 [pid 21309]      0.000036 select(29, [28], [], [], {0,
> 100000}) = 1 (in [28], left {0, 83714}) [pid 21309]      0.016363 read(28, "\1
> \0\0\0 \0\0\0\0\0\0\0\0\0\0\0\263\263\4\0\207\t\2\0Mm\230\0\0\0\0\0", 1024) =
> 32 [pid 21309]      0.000043 write(6, "\4\0\0\0", 4) = 4 [pid 21309]
> 0.000031 write(6, "*\0\0\0", 4) = 4 [pid 21309]      0.000031 ioctl(28,
> 0xc018643a, 0x7fa42fee5b60) = 0 [pid 21309]      0.000034 select(29, [28],
> [], [], {0, 100000}) = 1 (in [28], left {0, 83540}) [pid 21309]      0.016545
> read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\263\263\4\0\261J\2\0Nm\230\0\0\0\0
> \0", 1024) = 32 [pid 21309]      0.000030 write(6, "\4\0\0\0", 4) = 4 [pid
> 21309]      0.000034 write(6, "*\0\0\0", 4) = 4 [pid 21309]      0.000058
> futex(0x7fa4407b4540, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 21309]      0.000034
> ioctl(28, 0xc018643a, 0x7fa42fee5b60) = 0 [pid 21309]      0.000035 select
> (29, [28], [], [], {0, 100000}) = 1 (in [28], left {0, 83603}) [pid
> 21309]      0.016455 read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\263\263\4\0\317
> \213\2\0Om\230\0\0\0\0\0", 1024) = 32 [pid 21309]      0.000031 write(6, "\4\0
> \0\0", 4) = 4 [pid 21309]      0.000027 write(6, "*\0\0\0", 4) = 4 [pid
> 21309]      0.000026 futex(0x7fa4407b4540, FUTEX_WAKE_PRIVATE, 1) = 1 [pid
> 21309]      0.000026 ioctl(28, 0xc018643a, 0x7fa42fee5b60) = 0 [pid
> 21309]      0.000050 select(29, [28], [], [], {0, 100000}) = 1 (in [28], left
> {0, 83526}) [pid 21309]      0.016612 read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0\0\0
> \0\263\263\4\0\370\314\2\0Pm\230\0\0\0\0\0", 1024) = 32 [pid 21309]
> 0.000049 write(6, "\4\0\0\0", 4) = 4 [pid 21309]      0.000026 write(6, "*\0\0
> \0", 4) = 4 [pid 21309]      0.000032 ioctl(28, 0xc018643a, 0x7fa42fee5b60) =
> 0 [pid 21309]      0.000029 select(29, [28], [], [], {0, 100000}) = 1 (in
> [28], left {0, 83610}) [pid 21309]      0.016481 read(28, "\1\0\0\0 \0\0\0\0\0
> \0\0\0\0\0\0\263\263\4\0\36\16\3\0Qm\230\0\0\0\0\0", 1024) = 32 [pid
> 21309]      0.000085 write(6, "\4\0\0\0", 4) = 4 [pid 21309]      0.000038
> write(6, "*\0\0\0", 4) = 4 [pid 21309]      0.000058 futex(0x7fa4407b4540,
> FUTEX_WAKE_PRIVATE, 1) = 1 [pid 21309]      0.000027 ioctl(28, 0xc018643a,
> 0x7fa42fee5b60) = 0 [pid 21309]      0.000029 select(29, [28], [], [], {0,
> 100000}) = 1 (in [28], left {0, 83620}) [pid 21309]      0.016488 read(28, "\1
> \0\0\0 \0\0\0\0\0\0\0\0\0\0\0\263\263\4\0FO\3\0Rm\230\0\0\0\0\0", 1024) = 32
> [pid 21309]      0.000143 write(6, "\4\0\0\0", 4) = 4 [pid 21309]
> 0.000039 write(6, "*\0\0\0", 4) = 4 [pid 21309]      0.000092 ioctl(28,
> 0xc018643a, 0x7fa42fee5b60) = 0 [pid 21309]      0.000036 select(29, [28],
> [], [], {0, 100000}) = 1 (in [28], left {0, 83738}) [pid 21309]      0.016357
> read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\263\263\4\0d\220\3\0Sm\230\0\0\0\0
> \0", 1024) = 32 [pid 21309]      0.000046 write(6, "\4\0\0\0", 4) = 4 [pid
> 21309]      0.000063 write(6, "*\0\0\0", 4) = 4 [pid 21309]      0.000027
> futex(0x7fa4407b4540, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 21309]      0.000026
> ioctl(28, 0xc018643a, 0x7fa42fee5b60) = 0 [pid 21309]      0.000025 select
> (29, [28], [], [], {0, 100000}) = 1 (in [28], left {0, 83667}) [pid
> 21309]      0.016404 read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\263\263\4\0\206
> \321\3\0Tm\230\0\0\0\0\0", 1024) = 32 [pid 21309]      0.000079 write(6, "\4\0
> \0\0", 4) = 4 [pid 21309]      0.000037 write(6, "*\0\0\0", 4) = 4 [pid
> 21309]      0.000036 futex(0x7fa4407b4540, FUTEX_WAKE_PRIVATE, 1) = 1 [pid
> 21309]      0.000029 ioctl(28, 0xc018643a, 0x7fa42fee5b60) = 0 [pid
> 21309]      0.000034 select(29, [28], [], [], {0, 100000}) = 1 (in [28], left
> {0, 83588}) [pid 21309]      0.016587 read(28, "\1\0\0\0 \0\0\0\0\0\0\0\0\0\0
> \0\263\263\4\0\262\22\4\0Um\230\0\0\0\0\0", 1024) = 32 [pid 21309]
> 0.000080 write(6, "\4\0\0\0", 4) = 4 [pid 21309]      0.000034 write(6, "*\0\0
> \0", 4) = 4 [pid 21309]      0.000035 ioctl(28, 0xc018643a, 0x7fa42fee5b60) =
> 0 [pid 21309]      0.000044 select(29, [28], [], [], {0, 100000}) = 1 (in
> [28], left {0, 83656}) [pid 21309]      0.016428 read(28, "\1\0\0\0 \0\0\0\0\0
> \0\0\0\0\0\0\263\263\4\0\324S\4\0Vm\230\0\0\0\0\0", 1024) = 32 [pid
> 21309]      0.000063 write(6, "\4\0\0\0", 4) = 4 [pid 21309]      0.000050
> write(6, "*\0\0\0", 4) = 4 [pid 21309]      0.000035 futex(0x7fa4407b4540,
> FUTEX_WAKE_PRIVATE, 1) = 1 [pid 21309]      0.000033 ioctl(28, 0xc018643a,
> 0x7fa42fee5b60) = 0
> 
> -- 
> "A mouse is a device used to point at the xterm you want to type in" - A.S.R.
> Microsoft is to operating systems ....
>                                       .... what McDonalds is to gourmet
> cooking Home page: http://marc.merlins.org/  
> 
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud 
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
> _______________________________________________
> enlightenment-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-users
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
enlightenment-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-users

Reply via email to