Thread (11 messages) 11 messages, 6 authors, 2014-02-24

Re: locking changes in tty broke low latency feature

From: Grant Edwards <hidden>
Date: 2014-02-20 19:34:18
Also in: linux-serial, lkml

On 2014-02-20, Peter Hurley [off-list ref] wrote:
On 02/19/2014 09:55 PM, Peter Hurley wrote:
quoted
On 02/19/2014 06:06 PM, Hal Murray wrote:
quoted
quoted
Can you give me an idea of your device's average and minimum required
latency (please be specific)?  Is your target arch x86 [so I can evaluate the
the impact of bus-locked instructions relative to your expected]?
The code I'm familiar with is ntpd and gpsd.  They run on almost any hardware
or OS and talk to a wide collection of devices.

There is no hard requirement for latency.  They just work better with lower
latency.  The lower the better.

People gripe about the latency due to USB polling which is about a ms.
Have you tried 3.12+ without low_latency? I ripped out a lot of locks
from 3.12+ so it's possible it already meets your requirements.
Using Alan's idea to mock up a latency test, I threw together a test jig
using two computers running 3.14-rc1 and my fwserial driver (modified to
not aggregrate writes) in raw mode where the target does this:

         while (1) {
                 read 64 bytes
                 compare to pattern
                 write 1 byte response
         }

and the sender does this:

         for (i = 0; i < 2000; i++) {
                 write 64-byte pattern
                 read 1 byte response
         }

Sender completes 2000 loops in 160ms total run time;
that's 80us average per complete round-trip.
If I understand correctly, that 80us _includes_ the actual time for
the bits on the wire (which means the actual "baud rate" involved is
high enough that it's negligible).

I think this shows that low_latency is unnecessary and should
just be removed/ignored by the tty core.
If that's the sort of latency that you get for typical kernel
configurations for typical distros, then I agree that the low_latency
flag is not needed by the tty later.

However, it might still be useful for the lower-level tty or
serial-core driver to control CPU usage vs. latency trade-offs (for
exaple, one of my drivers uses it to decide where to set the rx FIFO
threshold).

-- 
Grant Edwards               grant.b.edwards        Yow! I wonder if I could
                                  at               ever get started in the
                              gmail.com            credit world?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help