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