Intel 945 backtrace

Peter Clifton pcjc2 at cam.ac.uk
Wed Dec 31 10:40:56 PST 2008


Hi guys,

I've been testing the beta release of the 2.6 series Intel driver
against a 2.6.28 kernel, with UXA and DRI2 enabled.

(I had 'Option "DRI2" "off"' in the Xorg.conf, but apparently that was
ignored - perhaps I put it in the wrong place, or this is not the right
option to control DRI2).

I've been noticing really poor performance whilst rendering lots of
small lines, something which x11perf -line10 seems to bear out:


x11perf - X11 performance program, version 1.2
The X.Org Foundation server version 10599003 on :0.0
from pcjc2lap
Wed Dec 31 18:36:35 2008

Sync time adjustment is 0.0708 msecs.

 600000 reps @   0.0100 msec (100000.0/sec): 10-pixel line
 600000 reps @   0.0100 msec (100000.0/sec): 10-pixel line
 600000 reps @   0.0100 msec (100000.0/sec): 10-pixel line
 600000 reps @   0.0100 msec (100000.0/sec): 10-pixel line
 600000 reps @   0.0100 msec ( 99900.0/sec): 10-pixel line
3000000 trep @   0.0100 msec (100000.0/sec): 10-pixel line


When profiling, it appears the hot-spot is in the kernel, with ~90% of
total system time spent waiting in there.

I upgraded to a git version of sysprof today, and this is able to trace
further inside the kernel. Hopefully this debugging information will be
of use (I can send the whole capture file to anyone who wants it).

This was traced whilst running x11perf -line10. The timings above were
recorded without sysprof tracing, in case the sysprof overhead skewed
the timings.

kernel                                                 0.00  90.63
  sysenter_do_call                                     0.01  81.78
    sys_ioctl                                          0.00  74.40
      do_vfs_ioctl                                     0.06  74.36
        vfs_ioctl                                      0.03  74.29
          drm_ioctl                                    0.19  73.78
            i915_gem_sw_finish_ioctl                   0.00  65.23
              i915_gem_object_flush_cpu_write_domain   0.00  65.21
                i915_gem_clflush_object                0.00  65.21
                  drm_clflush_pages                   47.95  64.06
                    kunmap_atomic                      9.64   9.65
                      common_interrupt                 0.00   0.01
                    native_flush_tlb_single            2.43   2.43
                    native_set_pte_at                  2.15   2.15
                    native_make_pte                    1.06   1.06
                    kmap_atomic                        0.00   0.73
                    paravirt_get_lazy_mode             0.04   0.04
                    common_interrupt                   0.00   0.01
                    kmap_atomic_prot                   0.01   0.01
                  kunmap_atomic                        1.09   1.09
                  common_interrupt                     0.00   0.03
                  kmap_atomic                          0.03   0.03
              kref_get                                 0.01   0.01
              mutex_lock                               0.01   0.01
            i915_gem_set_domain_ioctl                  0.03   7.56
              i915_gem_object_set_to_cpu_domain        0.03   7.41
                i915_gem_clflush_object                0.00   7.37
                  drm_clflush_pages                    5.46   7.23
                  kunmap_atomic                        0.13   0.13
                  common_interrupt                     0.00   0.01
                i915_gem_object_wait_rendering         0.00   0.01
              drm_gem_object_lookup                    0.00   0.03
              i915_gem_object_set_to_gtt_domain        0.01   0.03
              drm_gem_object_unreference               0.00   0.01
              mutex_lock                               0.01   0.01
              kref_get                                 0.01   0.01
              _cond_resched                            0.01   0.01
            i915_gem_execbuffer                        0.03   0.42
            i915_gem_get_tiling                        0.00   0.10
            __kmalloc                                  0.10   0.10
            kfree                                      0.07   0.07
            mutex_unlock                               0.04   0.04
            drm_gem_object_unreference                 0.01   0.01
            i915_gem_throttle_ioctl                    0.00   0.01
            drm_gem_object_lookup                      0.01   0.01
            i915_gem_busy_ioctl                        0.01   0.01
            copy_from_user                             0.01   0.01
          block_ioctl                                  0.00   0.42
          lock_kernel                                  0.01   0.01
          copy_to_user                                 0.01   0.01
          kfree                                        0.01   0.01
          i915_gem_get_tiling                          0.01   0.01
        lock_kernel                                    0.01   0.01
      fget_light                                       0.04   0.04
    sys_select                                         0.00   3.58
    sys_read                                           0.04   1.67
    sys_writev                                         0.07   0.91
    sys_setitimer                                      0.01   0.49
    sys_close                                          0.00   0.33
    sys_open                                           0.00   0.22
    sys_poll                                           0.00   0.10
    sys_socketcall                                     0.00   0.03
    sys_stat64                                         0.00   0.01
    fget_light                                         0.01   0.01
    sys_mmap2                                          0.00   0.01
    copy_from_user                                     0.01   0.01
  native_flush_tlb_single                              3.62   3.62
  __ticket_spin_lock                                   2.07   2.07
  read_hpet                                            1.24   1.24
  work_resched                                         0.00   0.52
  sysenter_past_esp                                    0.46   0.46
  native_set_pte                                       0.13   0.13
  fput                                                 0.10   0.10
  __ticket_spin_unlock                                 0.09   0.09
  kernel_thread_helper                                 0.00   0.09
  syscall_call                                         0.00   0.07
  system_call                                          0.06   0.06
  __ticket_spin_trylock                                0.06   0.06
  paravirt_get_lazy_mode                               0.04   0.04
  kmap_atomic_prot                                     0.03   0.03
  common_interrupt                                     0.00   0.03
  mutex_unlock                                         0.03   0.03
  mutex_lock                                           0.03   0.03
  sys_ioctl                                            0.01   0.01
  pid_vnr                                              0.01   0.01
  ioread32                                             0.01   0.01
  path_get                                             0.01   0.01
  apparmor_file_permission                             0.01   0.01
  _read_lock                                           0.01   0.01
  apparmor_socket_recvmsg                              0.01   0.01
  kunmap_atomic                                        0.01   0.01
  __free_pages                                         0.01   0.01
  copy_from_user                                       0.01   0.01
  get_slab                                             0.01   0.01
  sys_read                                             0.01   0.01
  kmap_atomic                                          0.01   0.01
  scm_destroy                                          0.01   0.01
  __kernel_vsyscall                                    0.00   0.00


Best regards,

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)




More information about the xorg mailing list