mouse behaving strange on high cpu load and rapid movements

Alexander Best alexbestms at math.uni-muenster.de
Sun Oct 4 14:53:39 UTC 2009


Hans Petter Selasky schrieb am 2009-10-04:
> On Sunday 04 October 2009 14:44:34 Alexander Best wrote:
> > Hans Petter Selasky schrieb am 2009-10-01:
> > > On Wednesday 30 September 2009 15:23:18 Alexander Best wrote:
> > > > here's some debug output:



> > also i've notice that during heavy cpu load my keyboard's input
> > rate is
> > much lower than usual.

> > i'll try producing a few benchmark results when writing/reading to
> > a usb
> > stick under heavy cpu load to give you an idea about the slowdown
> > rate.

> Hi,

> If you look at the top of usb_process() in sys/dev/usb/usb_process.c,
> then you
> see there is some code to do priority settings. Recently something
> about the
> USB processes/threads was changed in USB regard, and I don't know if
> this
> might be the cause. Andrew, you might want to check if the priority
> settings
> in the USB code are still valid.

> I'm currently using the BSD scheduler, not ULE.

> --HPS

i did some more tests. first i attached a different mouse and in fact you were
right: the other mouse wasn't producing random copy&pastes during movements.

however the mouse was also behaving sloppy. so i think there is in fact a
priority problem somewhere. here are some SCHED/SMP tests i made:

SMP enabled + SCHED_ULE: sloppy mouse/keyboard
SMP disabled + SCHED_ULE: no problems
SMP enabled + SCHED_4BSD: no porblems

i did some bencmarking under SCHED_ULE + SMP enabled using the following
command `time dd if=/dev/zero of=/mnt/umass/test bs=1m count=100`. here are
the results:

without cpu intensive tasks running:
100+0 records in
100+0 records out
104857600 bytes transferred in 26.391317 secs (3973186 bytes/sec)

real    0m26.409s
user    0m0.000s
sys     0m1.385s

with cpu intensive tasks running:
100+0 records in
100+0 records out
104857600 bytes transferred in 41.911261 secs (2501896 bytes/sec)

real    0m42.748s
user    0m0.009s
sys     0m0.376s

i've also switched to the 4BSD scheduler and everything's fine now.

to produce heavy cpu load i compiled www/firefox35 and simultaniously ran this
app:

#include <stdio.h>

void tower(int n, int source, int target, int help) {
    if (n >= 1) {
        turm(n-1, source, help, target);
        turm(n-1, help, target, source);
    }
}

int main() {
    tower(10000, 1, 3, 2);
}

cheers.
alex


More information about the freebsd-usb mailing list