linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Henrik Rydberg <rydberg@euromail.se>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Rafi Rubin <rafi@seas.upenn.edu>,
	linux-input <linux-input@vger.kernel.org>,
	Jiri Kosina <jkosina@suse.cz>,
	Mika Kuoppala <mika.kuoppala@nokia.com>
Subject: Re: Lost events in older kernels
Date: Sat, 22 May 2010 23:26:30 +0200	[thread overview]
Message-ID: <4BF84C06.9050103@euromail.se> (raw)
In-Reply-To: <20100522210810.GA30516@core.coreip.homeip.net>

Dmitry Torokhov wrote:
> On Sat, May 22, 2010 at 10:57:42PM +0200, Henrik Rydberg wrote:
>> Dmitry Torokhov wrote:
>>> On Sat, May 22, 2010 at 12:27:15PM +0200, Henrik Rydberg wrote:
>>>> Rafi Rubin wrote:
>>>>> -----BEGIN PGP SIGNED MESSAGE-----
>>>>> Hash: SHA1
>>>>>
>>>>> On 05/22/10 03:42, Dmitry Torokhov wrote:
>>>>>> On Sat, May 22, 2010 at 03:06:07AM -0400, Rafi Rubin wrote:
>>>>>>> I'm playing with a project with a 2.6.29 kernel, and the userspace application
>>>>>>> seems to miss some events.  Is there a particular fix that improved the handling?
>>>>>>>
>>>>>>> Also tried catting the dev to a file while testing, and the dump also is missing
>>>>>>> some events.
>>>>>>>
>>>>>> No "interesting" patches went into evdev for a few release now...
>>>>>>
>>>>>> Hm, could it be that event queue is overflowing before userspace gets a
>>>>>> chance to empty it. What kind of event rate are we talking here?
>>>>>>
>>>>> Quite possibly.  It is a multitouch device and we know Henrik's been concerned
>>>>> with the load for a while.
>>>>>
>>>>> So to put some numbers behind his fears:
>>>>>
>>>>> 146668 hid events processed
>>>>> 24952 evdev events captured with a cat
>>>>> 30 seconds (give or take).
>> Thanks for these numbers, Rafi.
>>
>>>>> This is for a mix of different numbers of fingers, but continuous use for those
>>>>> 30 seconds.  And X was running and reading the dev node too.
>>>> Others have experienced this too. Mika has a patch for this, increasing the
>>>> (kernel) evdev buffer quite a bit, from 64 to 256. I believe the reason it is
>>>> not sent upstream is because it increases the footprint by 3 Kb. Perhaps a
>>>> dynamic solution could work here.
>>>>
>>> Yes, if input devices could hint handlers about their "packet size"
>>> then evdev could size it's event queue accordingly. I'd say we need to
>>> keep about 8 packets worth of data (number is pulled right out of my
>>> behind ;) )...
>>>
>> Yeah. The bcm5974 driver sends 8 events per finger, plus some ST stuff. With
>> four fingers on the pad, that amounts to roughly 40 events per packet.
>>
>> 146668 / 24952 = 5.9
>> 40 * 8 / 64 = 5.0
>>
>> Looks reasonable, doesn't it?
>>
>> Regarding the packet size hinting, the handler already knows which events are
>> potentially being sent, and could produce a reasonable buffer size from it. In
>> particular if it knows which events are bypassing filtering. ;-)
>>
> 
> Yes, but the driver knows for sure. Why making one guess when another
> can tell?
> 

I was thinking that the data stream itself should be enough to dynamically
adjust the buffer size, given an initial appropriate size. In theory, that could
even be better than asking the driver. It would also avoid changing all drivers.
Just a thought. Either way, the problem seems real.

Henrik

  reply	other threads:[~2010-05-22 21:26 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-22  7:06 Lost events in older kernels Rafi Rubin
2010-05-22  7:42 ` Dmitry Torokhov
2010-05-22  9:22   ` Rafi Rubin
2010-05-22 10:27     ` Henrik Rydberg
2010-05-22 20:12       ` Dmitry Torokhov
2010-05-22 20:57         ` Henrik Rydberg
2010-05-22 21:08           ` Dmitry Torokhov
2010-05-22 21:26             ` Henrik Rydberg [this message]
2010-05-23  2:10         ` Rafi Rubin
2010-05-23  2:24           ` Dmitry Torokhov
2010-05-23  8:44           ` Henrik Rydberg
2010-05-24 17:48             ` Dmitry Torokhov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BF84C06.9050103@euromail.se \
    --to=rydberg@euromail.se \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jkosina@suse.cz \
    --cc=linux-input@vger.kernel.org \
    --cc=mika.kuoppala@nokia.com \
    --cc=rafi@seas.upenn.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).