On Wed, Dec 16, 2009, Johan Bilien wrote: > Hi, > > we are using the poulsbo driver which was written by TG for intel and is > basically a wrapper around some Xpsb binary blob. > > One of our main problems nowadays is 2D performance. I have been using > the firefox-20090601 cairo trace as my benchmark, because our app is a > firefox based browser. > > Running cairo master (and pixman 0.16.2), the image backend is about 3 > times faster than the xlib one: > > [ # ] backend test min(s) median(s) stddev. > [ 0] image firefox-20090601 110.229 119.423 4.00% > [ 0] xlib firefox-20090601 297.572 298.082 0.82% > > So I thought that if I could make XRender use pixman instead of using > the driver I might be able to get closer to the image backend > performance. > > I tried both disabling only the Composite hooks or all of exa's hooks, > but unfortunately I am still far from the image backend figures: > > (Composite disabled) > [ # ] backend test min(s) median(s) stddev.count > [ 0] xlib firefox-20090601 269.082 269.082 0.00% 1/1 > [ 0] image firefox-20090601 101.397 101.397 0.00% 1/1 > > (all EXA hooks disabled) > [ # ] backend test min(s) median(s) stddev.count > [ 0] xlib firefox-20090601 271.958 271.958 0.00% 1/1 > [ 0] image firefox-20090601 100.829 100.829 0.00% 1/1 > > So I'm left wondering where the overhead of the xlib backend comes from. > If I run sysprof (profile attached) while running the trace (in the > Composite disabled case), I can see that pixman gets only 27.5% of the > CPU time, while 39.4% is spent "in kernel". I'm vaguely thinking that > these could be from moving pixmap data to and from the VRAM, but really > I have no idea. > > Any idea on how to further investigate this?
Profiling with oprofile shows that when running the firefox trace (xlib backend, Composite exa hook disabled), the CPU is idle a lot of the time. Maybe it's waiting for the GPU a lot? Here's the top of the profile: 10082 33.9999 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia acpi_idle_enter_bm 3179 10.7207 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia get_page_from_freelist 1662 5.6048 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia acpi_idle_enter_simple 1317 4.4414 libpixman-1.so.0.16.2 libpixman-1.so.0.16.2 pixman_fill_sse2 1080 3.6421 libpixman-1.so.0.16.2 libpixman-1.so.0.16.2 bits_image_fetch_transformed 804 2.7114 libc-2.7.so libc-2.7.so (no symbols) 800 2.6979 Xorg Xorg (no symbols) 545 1.8379 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia native_safe_halt 497 1.6761 libpixman-1.so.0.16.2 libpixman-1.so.0.16.2 pixman_rasterize_edges 412 1.3894 libpixman-1.so.0.16.2 libpixman-1.so.0.16.2 pixman_blt_sse2 411 1.3860 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia do_page_fault 383 1.2916 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia kunmap_atomic 380 1.2815 libpixman-1.so.0.16.2 libpixman-1.so.0.16.2 fetch_pixel_x8r8g8b8 341 1.1500 libcairo.so.2.10905.0 libcairo.so.2.10905.0 _cairo_bentley_ottmann_tessellate_polygon 319 1.0758 libcairo-script-interpreter.so.2.10905.0 libcairo-script-interpreter.so.2.10905.0 _scan_file 239 0.8060 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia free_hot_cold_page 237 0.7992 libcairo-script-interpreter.so.2.10905.0 libcairo-script-interpreter.so.2.10905.0 csi_file_getc 224 0.7554 libcairo-script-interpreter.so.2.10905.0 libcairo-script-interpreter.so.2.10905.0 _csi_hash_table_lookup 192 0.6475 libz.so.1.2.3.3 libz.so.1.2.3.3 (no symbols) 142 0.4789 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia handle_mm_fault 116 0.3912 libX11.so.6.2.0 libX11.so.6.2.0 (no symbols) 108 0.3642 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia kmap_atomic_prot 102 0.3440 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia page_address 99 0.3339 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia finish_task_switch 94 0.3170 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia cpuidle_idle_call 85 0.2866 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia unmap_vmas 84 0.2833 libcairo-script-interpreter.so.2.10905.0 libcairo-script-interpreter.so.2.10905.0 _csi_parse_number 84 0.2833 libpixman-1.so.0.16.2 libpixman-1.so.0.16.2 sse2_composite_add_8888_8888 79 0.2664 vmlinux-2.6.24-24-lpia vmlinux-2.6.24-24-lpia release_pages 77 0.2597 libcairo-script-interpreter.so.2.10905.0 libcairo-script-interpreter.so.2.10905.0 token_end 76 0.2563 libxcb.so.1.0.0 libxcb.so.1.0.0 (no symbols) 75 0.2529 libfb.so libfb.so image_from_pict 75 0.2529 libpixman-1.so.0.16.2 libpixman-1.so.0.16.2 _pixman_run_fast_path 70 0.2361 libcairo.so.2.10905.0 libcairo.so.2.10905.0 _cairo_spline_decompose_into 70 0.2361 libpixman-1.so.0.16.2 libpixman-1.so.0.16.2 sse2_composite_over_n_8888_8888_ca _______________________________________________ xorg mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/xorg
