#10143 NORM Not Tri: Use interrupts instead of polling for VDMA_C_DONE

Zarro Boogs per Child bugtracker at laptop.org
Sat May 1 20:15:28 EDT 2010


#10143: Use interrupts instead of polling for VDMA_C_DONE
---------------------------+------------------------------------------------
 Reporter:  jon.nettleton  |                 Owner:  corbet       
     Type:  enhancement    |                Status:  new          
 Priority:  normal         |             Milestone:  Not Triaged  
Component:  kernel         |               Version:  not specified
 Keywords:                 |           Next_action:  never set    
 Verified:  0              |   Deployment_affected:               
Blockedby:                 |              Blocking:               
---------------------------+------------------------------------------------
 When using the interrupt handler instead of polling for VDMA_C_DONE we see
 a non-significant amount of cpu usage reduction.  I understand this is
 just idle polling but it may save enough power that it is worth
 implementing the attached patch.  You do have to raise the
 completion_timeout to 2jiffies or else some interrupts are missed.  If you
 catch the VDE_I_DMA0TDEN interrupt off the global interrupt control you
 don't need the additional timeout, that seems to come through first.

 Here is the dstat 5 10 output for the Record Activity running in Sugar.


 {{{
 Polling
 ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
 usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  20  26  25  30   0   0|2239k   24k|   0     0 |   0     0 | 371   825
  14   6  38  42   0   0|1638B   50k| 200B  378B|   0     0 | 271   514
  16   2  78   4   0   0|   0  1229B| 200B  378B|   0     0 | 251   499
  14   0  85   0   0   0|   0     0 | 200B  369B|   0     0 | 218   482
  12   1  88   0   0   0|   0     0 | 221B  366B|   0     0 | 217   476
  10   1  89   0   0   0|   0     0 | 200B  369B|   0     0 | 205   459
  11   0  89   0   0   0|   0     0 | 242B  369B|   0     0 | 196   447
  11   8  80   0   0   0|   0     0 | 115B  409B|   0     0 | 197   448
  19   2  72   7   0   0|3277B   34k|  72B  388B|   0     0 | 211   462
  21   0  79   0   0   0|   0   410B|  62B  378B|   0     0 | 194   449
  17   2  81   0   0   0|   0     0 |  62B  369B|   0     0 | 216   464


 Interrupt Driven
 ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
 usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
   1   1  96   2   0   0|  20k 5795B|   0     0 |   0     0 |  53    67
   1   1  98   0   0   0|   0    50k|  52B  493B|   0     0 | 106   268
   0   1  99   0   0   0|   0    18k|  52B  386B|   0     0 |  83   238
   0   1  99   0   0   0|   0     0 |  52B  345B|   0     0 |  72   222
   1   1  98   0   0   0|   0     0 |  94B  342B|   0     0 |  77   224
   0   1  99   0   0   0|   0     0 |  52B  376B|   0     0 |  78   226
   0   0  99   0   0   0|   0  4096B|  82B  385B|   0     0 |  75   214
   1   0  99   0   0   0|   0     0 | 100B  380B|   0     0 |  77   225
   0   1  99   0   0   0|   0     0 | 116B  342B|   0     0 |  78   228
   0   1  99   0   0   0|   0     0 | 190B  342B|   0     0 |  74   210
   0   1  99   0   0   0|   0     0 | 232B  342B|   0     0 |  79   225
 }}}

-- 
Ticket URL: <http://dev.laptop.org/ticket/10143>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system


More information about the Bugs mailing list