Re: Periodical interrupt storm when playing game with USB keyboard

From: Johannes Lundberg <johalun0_at_gmail.com>
Date: Sun, 21 Jan 2018 20:35:24 +0000
Sending the same again, this time cc the list.


On Sun, Jan 21, 2018 at 7:34 PM, Hans Petter Selasky <hps_at_selasky.org>
wrote:

> On 01/21/18 16:41, Johannes Lundberg wrote:
>
>> Hi
>>
>> Finally I found the root to the problem that's been having me puzzled for
>> the last week.
>>
>> I started playing UT2004 on my laptop while away from home. Worked
>> perfectly. When I'm home and connect external display+mouse/keyboard, I
>> get
>> weird random lag.
>>
>> It is intr process that goes up to 100% CPU usage (swi4: clock) for a
>> couple of seconds every 30 seconds or so, but only when I'm moving around
>> in the game. To move around you need to hold down any of the wasd-keys.
>>
>> Turns out, the interrupt storms only happen when I use my external
>> keyboard, not with the laptop keyboard.
>>
>> The internal keyboard is:
>> atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
>> atkbd0: <AT Keyboard> irq 1 on atkbdc0
>>
>> and external (Microsoft sculpt ergonomic desktop):
>> ugen0.2: <Microsoft Microsoft 2.4GHz Transceiver v9.0> at usbus0
>> ukbd0: <Microsoft Microsoft 2.4GHz Transceiver v9.0, class 0/0, rev
>> 2.00/7.97, addr 1> on usbus0
>>
>> The game runs with a linux binary. 32/64bit both act the same.
>> It uses libSDL-1.2 from /compat/linux/lib for rendering but not sure about
>> input events.
>>
>> I tried lowering the key repeat rate both with xset and kbdcontrol but it
>> has no effect.
>>
>> I don't have any wired USB keyboard to try with.
>>
>> Anyone have a clue to what's going on?
>>
>> Hardware is Dell Latitude E7270
>> with
>> FreeBSD 12-CURRENT
>> drm-next-kmod
>> linux-c6
>>
>
> Hi,
>
> What does "vmstat -i" say?
>

Don’t remember the exact values now but it says cpu0:timer is getting A LOT
of interrupts. Like at least 10-50x the others. Otherwise normal.


>
> The issue can also be caused by a timer with a small or zero timeout.
>
> This can be checked by setting:
> kern.eventtimer.periodic=1
>
> in /boot/loader.conf and rebooting.
>

Wow, kern.eventtimer.periodic=1 really made all the difference.
No problem at all now and all cpu timers have equal interrupt total and
rate.

What does kern.eventtimer.periodic do?  The sysctl description wasn't that
elaborate...



> --HPS
>
Received on Sun Jan 21 2018 - 19:36:07 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:14 UTC