#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