Problem with mouse during high CPU load

Alexander Best arundel at freebsd.org
Fri Mar 18 10:58:33 UTC 2011


On Thu Mar 17 11, Alexander Best wrote:
> On Thu Mar 17 11, Alexander Best wrote:
> > On Fri Jan 21 11, Attilio Rao wrote:
> > > 2011/1/21 Alexander Best <arundel at freebsd.org>:
> > > > hi there,
> > > >
> > > > i've reported this issue quite a while ago [1], but back then nobody was able
> > > > to help me. i have an issue with my usb mouse. when there's a high CPU load it
> > > > produces random mouse clicks. this doesn't happen on other OSes. i've attached
> > > > a different usb mouse to my freebsd box and i could't observe the same
> > > > behavior. so it seems this problem is only related to specific mice.
> > > 
> > > I can experience the same problem.

switching to sched_4bsd and turning on preemption improves the situation a lot:

== low CPU load ==
otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 4.382537 secs (23926233 bytes/sec)
otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 4.379637 secs (23942076 bytes/sec)
otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 4.380993 secs (23934666 bytes/sec)

== high CPU load on cores 1 and 2 ==
otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 4.364027 secs (24027716 bytes/sec)
otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 4.364638 secs (24024353 bytes/sec)
otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 4.366761 secs (24012672 bytes/sec)

...i'll check whether sched_ule and preemption enabled also returns such nice
results.

cheers.
alex

> 
> also i did a few i/o tests using dd in combination with high CPU load:
> 
> == low CPU load ==
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 4.433087 secs (23653404 bytes/sec)
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 4.414529 secs (23752841 bytes/sec)
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 4.433871 secs (23649222 bytes/sec)
> 
> == high CPU load on cores 1 and 2 ==
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 39.220969 secs (2673509 bytes/sec)
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 41.791827 secs (2509046 bytes/sec)
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 58.067697 secs (1805782 bytes/sec)
> 
> == high CPU load on core 1 ==
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 4.552803 secs (23031438 bytes/sec)
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 4.593116 secs (22829295 bytes/sec)
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 4.588891 secs (22850314 bytes/sec)
> 
> = high CPU load on core 0 ==
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 13.381070 secs (7836264 bytes/sec)
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 12.810288 secs (8185421 bytes/sec)
> otaku% dd if=/dev/da0 of=/dev/null bs=1m count=100
> 100+0 records in
> 100+0 records out
> 104857600 bytes transferred in 13.519533 secs (7756008 bytes/sec)
> 
> cheers.
> alex
> 
> > 
> > i've captured the iostat ouput during the random mouse clicks:
> > 
> >        tty            ada0             ada1              cd0             cpu
> >  tin  tout  KB/t tps  MB/s   KB/t tps  MB/s   KB/t tps  MB/s  us ni sy in id
> >   36   227 31.97   2  0.05  31.47  16  0.50  59.61   0  0.02   9  0  3  0 88
> >    7   232  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00   5  0  2  1 92
> >    9    82  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   4  0  3  0 94
> >    6    77  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   6  0  3  1 91
> >   16   676  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   6  0  4  0 89
> >    8    77  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00   7  0  2  1 90
> >    2    78  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00  16  0  3  0 80
> >    4    77  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00   6  0  2  1 91
> >  121    78  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   3  0  1  0 96
> >  290    77  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00   4  0  3  1 92
> >  998    78  0.00   0  0.00  32.00   1  0.03   0.00   0  0.00   6  0  5  0 89
> > 3231 30024  7.20   5  0.03  13.23 1583 20.45   0.00   0  0.00  25  0 28  3 44
> > 2437 18319  4.00   2  0.01  13.04 916 11.66   0.00   0  0.00  16  0 17  0 67
> > 1291  8441  0.00   0  0.00  13.08 1085 13.86   0.00   0  0.00  15  0 14  3 68
> >  737   243  0.00   0  0.00  13.13 359  4.61   0.00   0  0.00   7  0  4  0 88
> >  396    77  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00   7  0  5  1 87
> >  124    78  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   5  0  1  0 94
> >    8    77  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00   7  0  3  1 89
> >   12   169  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   8  0  2  0 89
> >    8    77  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00   7  0  2  1 91
> >    4    78 16.00   6  0.09   0.00   0  0.00   0.00   0  0.00   4  0  2  0 94
> >   24    77 36.00  16  0.56  24.34  35  0.82   0.00   0  0.00  16  0  6  1 77
> >    8    77  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   4  0  3  0 92
> >    8    77  0.00   0  0.00  14.62  16  0.23   0.00   0  0.00   7  0  2  0 91
> >    4    77  0.00   0  0.00  18.24  17  0.30   0.00   0  0.00   5  0  5  0 90
> >    6    77  0.00   0  0.00  32.00   2  0.06   0.00   0  0.00  16  0  3  1 81
> >    6    77  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   7  0  2  0 91
> >    0    77  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   4  0  2  1 93
> >    5    77  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   4  0  4  0 91
> >    1    77  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   3  0  0  1 96
> >    0    77  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00   2  0  1  0 97
> > 
> > ...in fact if i move the mouse fast enough i'm able to reproduce the issue
> > without any high CPU activity.
> > 
> > the following iostat output was taken during high CPU load. now also slow mouse
> > movements can cause random mouse events (i.e. clicks) to happen:
> > 
> >        tty            ada0             ada1              cd0             cpu
> >  tin  tout  KB/t tps  MB/s   KB/t tps  MB/s   KB/t tps  MB/s  us ni sy in id
> >   36   230 31.80   2  0.05  31.39  16  0.49  59.61   0  0.02   9  0  3  0 88
> >    1   233  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00  96  0  4  0  0
> >  467    78  0.00   0  0.00  128.00   4  0.50   0.00   0  0.00  96  0  3  1  0
> >  451    78  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00  96  0  4  0  0
> >  325    83  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00  93  0  6  1  0
> >    7    86  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00  97  0  3  0  0
> >   21   684  4.00   1  0.00   0.00   0  0.00   0.00   0  0.00  95  0  4  1  0
> >  540   625  0.00   0  0.00  13.60  98  1.30   0.00   0  0.00  95  0  5  0  0
> >  676  1222  0.00   0  0.00  13.43 307  4.03   0.00   0  0.00  91  0  7  2  0
> >  411    76  0.00   0  0.00  14.48 312  4.42   0.00   0  0.00  95  0  5  0  0
> >  388    77  0.00   0  0.00  128.00   4  0.50   0.00   0  0.00  94  0  5  1  0
> >  206    78  0.00   0  0.00   0.00   0  0.00   0.00   0  0.00  98  0  2  0  0
> >   17    77  0.00   0  0.00  128.00   1  0.12   0.00   0  0.00  97  0  3  0  0
> >    0    78  0.00   0  0.00  16.00  32  0.49   0.00   0  0.00  98  0  2  0  0
> > 
> > i'm still under the impression this is a scheduler problem, but who knows...
> > 
> > cheers.
> > alex
> > 
> > > 
> > > Attilio
> > > 
> > > 
> > > -- 
> > > Peace can only be achieved by understanding - A. Einstein
> > 
> > -- 
> > a13x
> 
> -- 
> a13x

-- 
a13x


More information about the freebsd-usb mailing list