From owner-freebsd-usb@FreeBSD.ORG Fri Mar 18 10:58:33 2011 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1233) id 6C4561065676; Fri, 18 Mar 2011 10:58:33 +0000 (UTC) Date: Fri, 18 Mar 2011 10:58:33 +0000 From: Alexander Best To: Attilio Rao Message-ID: <20110318105833.GA8288@freebsd.org> References: <20110121182340.GA80488@freebsd.org> <20110317221031.GA11751@freebsd.org> <20110317223223.GA15811@freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110317223223.GA15811@freebsd.org> Cc: freebsd-usb@freebsd.org Subject: Re: Problem with mouse during high CPU load X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Mar 2011 10:58:33 -0000 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 : > > > > 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