[Trac #905] The libertas driver causes a 33% slowdown.

Zarro Boogs per Child bugtracker at laptop.org
Mon Feb 19 19:20:16 EST 2007


#905: The libertas driver causes a 33% slowdown.
---------------------+------------------------------------------------------
 Reporter:  cjb      |        Owner:  marcelo
     Type:  defect   |       Status:  new    
 Priority:  blocker  |    Milestone:  BTest-3
Component:  kernel   |   Resolution:         
 Keywords:           |  
---------------------+------------------------------------------------------
Comment (by wmb at firmworks.com):

 The pystone test illustrates the problem, but since it is complicated, it
 is of limited value for fault isolation.  The following test illustrates
 the problem and is much simpler:

 bash-3.1# wget http://dev.laptop.org/~wmb/spin.zip
 bash-3.1# unzip spin.zip
 bash-3.1# time ./forth spin.fth

 real  0m9.234s
 user  0m9.210s
 sys   0m0.030s
 bash-3.1# mv /lib/firmware/usb8388.bin /lib/firmware/usb8388.bin.bak
 bash-3.1# rmmod usb8xxx
 bash-3.1# time ./forth spin.fth

 real  0m6.954s
 user  0m6.930s
 sys   0m0.020s
 bash-3.1#

 Notes:

 spin.fth contains:

 code spin
    cx pop
    begin loopne
 c;
 d# 500,000,000 spin

 It essentially consists of 500,000,000 iterations of a 1-instruction
 "decrement cx and branch to self" loop, i.e. the LOOPNE instruction.

 I have measured the runtime of this same loop under Open Firmware with
 interrupts turned off, using a stopwatch.  The result was the same - 6.9
 seconds.  So the "fast" time under Linux really means "essentially no
 overhead".

 This loop does not use memory at all.  The instruction just sits there
 decrementing the register.  It might not even hit the icache, depending on
 how the Geode's pipeline is implemented.

 Note also that the "user" and "real" times are virtually identical.  The
 2.4 second difference appears in the "user" category, so whatever it is
 that is causing the slowdown is getting charged against userland.  How
 does "time" account for time spent in interrupt handlers?  Is that charged
 to the running process, or to the system?  If interrupt time is charged to
 the system, it would imply that the slowdown is caused by some deep
 hardware stall instead of by time stolen by interrupt handlers.

-- 
Ticket URL: <http://dev.laptop.org/ticket/905#comment:1>
One Laptop Per Child <http://laptop.org/>



More information about the Bugs mailing list