public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Stas Sergeev <stsp@list.ru>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: Jarkko Huijts <jarkko.huijts@gmail.com>,
	Alan Cox <alan@linux.intel.com>,
	linux-usb@vger.kernel.org, linux-serial@vger.kernel.org,
	Linux kernel <linux-kernel@vger.kernel.org>,
	Caylan Van Larson <i@caylan.net>,
	"Rafael J. Wysocki" <rjw@sisk.pl>
Subject: Re: Regression: ftdi_sio is slow (since Wed Oct 10 15:05:06 2012)
Date: Fri, 03 May 2013 22:05:55 +0400	[thread overview]
Message-ID: <5183FC83.8090602@list.ru> (raw)
In-Reply-To: <20130503165231.GA1966@kroah.com>

03.05.2013 20:52, Greg KH пишет:
> On Fri, May 03, 2013 at 09:38:50PM +0400, Stas Sergeev wrote:
>> 03.05.2013 20:30, Greg KH пишет:
>>> We need some way to check the chars in the buffer, is the device you are
>>> using just very slow to respond to this request?  How slow?  Do you have
>>> a test case that we can see how it is affected?
>> Greg, unfortunately, I do have nothing.
>> The customer is in CC list, so maybe he will
>> provide the test-case, but I doubt.
>>
>> Please, what are your concerns here?
>> The patch in question does this:
>> ---
>> + ret = usb_control_msg(port->serial->dev,
>> + usb_rcvctrlpipe(port->serial->dev, 0),
>> + FTDI_SIO_GET_MODEM_STATUS_REQUEST,
>> + FTDI_SIO_GET_MODEM_STATUS_REQUEST_TYPE,
>> + 0, priv->interface,
>> + buf, 2, WDR_TIMEOUT);
>> ---
>> Obviously, this is too expensive to call too frequently,
>> or am I missing something?
> Why do you think that is too expensive to call?  Does it somehow stop
> the data being sent to the device through the serial endpoints?  Is
> userspace calling this function too much slowing something else down?
No, it doesn't slow down the data transfer.
But it makes a select() call to take much longer to complete,
and the same goes to TIOCOUTQ ioctl. Yes, the app calls select()
quite too much, and it is single-threaded, too. :)

>> I asked the customer to comment out
>> tty_chars_in_buffer(tty) < WAKEUP_CHARS
>> line in n_tty.c, and he said that cured his problems,
>> so I think my guess was right.
> What exactly is the "problem" being seen?
No idea.
Well, I can make a test-case that does 1000000 select() calls
in a loop and time it. This is probably the best I can do.

>> The patch claims it only affects tcdrain() and close().
>> Its trivial to see it also affects poll(), select() and TIOCOUTQ
>> ioctl, so even from that it is already broken.
>> Why do you need a test-case for this?
> Because I don't know what the problem really is :)
Slow select() call (and other calls).
Can we just use usb_serial_generic_chars_in_buffer()
in ftdi_sio? What was the reason behind the patch at all,
why it is so importand to query TEMT? I can write some
test-case, but it would be better if I at least understand
why the patch was needed at all. I don't understand why
quering TEMT is that important.

I can code up the patch that will just stop quering TEMT,
test it with the customer and send it to you (basically, a revert
of the patch in question).

  reply	other threads:[~2013-05-03 17:07 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-03 15:02 Regression: ftdi_sio is slow (since Wed Oct 10 15:05:06 2012) Stas Sergeev
2013-05-03 16:30 ` Greg KH
2013-05-03 17:38   ` Stas Sergeev
2013-05-03 16:52     ` Greg KH
2013-05-03 18:05       ` Stas Sergeev [this message]
2013-05-03 17:16         ` Greg KH
2013-05-03 18:27           ` Stas Sergeev
2013-05-03 20:34             ` Greg KH
2013-05-03 21:50               ` Stas Sergeev
2013-05-04 11:15                 ` Johan Hovold
2013-05-04 11:39                   ` Peter Hurley
2013-05-05 18:29                     ` Johan Hovold
2013-05-05 18:32                       ` [PATCH 0/7] USB: serial: add wait_until_sent-support Johan Hovold
2013-05-05 18:32                         ` [PATCH 1/7] USB: serial: add wait_until_sent operation Johan Hovold
2013-05-05 18:32                         ` [PATCH 2/7] USB: serial: add generic wait_until_sent implementation Johan Hovold
2013-05-08 14:25                           ` Stas Sergeev
2013-05-08 15:48                             ` Johan Hovold
2013-05-08 15:51                           ` [PATCH v2 2/8] " Johan Hovold
2013-05-05 18:32                         ` [PATCH 3/7] USB: ftdi_sio: clean up get_modem_status Johan Hovold
2013-05-05 18:32                         ` [PATCH 4/7] USB: ftdi_sio: fix chars_in_buffer overhead Johan Hovold
2013-05-05 18:32                         ` [PATCH 5/7] USB: io_ti: " Johan Hovold
2013-05-05 18:32                         ` [PATCH 6/7] USB: ti_usb_3410_5052: " Johan Hovold
2013-05-05 18:32                         ` [PATCH 7/7] USB: serial: clean up chars_in_buffer Johan Hovold
     [not found]                         ` <81D166EE-BB85-4A72-A6FA-A1F6B5633CB0@caylan.net>
2013-05-20 10:07                           ` [PATCH 0/7] USB: serial: add wait_until_sent-support Johan Hovold
2013-05-04 12:44                   ` Regression: ftdi_sio is slow (since Wed Oct 10 15:05:06 2012) Stas Sergeev
2013-05-04  9:37               ` Stas Sergeev
2013-05-03 18:15       ` Stas Sergeev

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=5183FC83.8090602@list.ru \
    --to=stsp@list.ru \
    --cc=alan@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=i@caylan.net \
    --cc=jarkko.huijts@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=rjw@sisk.pl \
    /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