[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4CA1367F.7040106@goop.org>
Date: Mon, 27 Sep 2010 17:27:43 -0700
From: Jeremy Fitzhardinge <jeremy@...p.org>
To: Alan Cox <alan@...rguk.ukuu.org.uk>
CC: Linus Torvalds <torvalds@...ux-foundation.org>,
Greg KH <gregkh@...e.de>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Arjan van de Ven <arjan@...ux.intel.com>,
Ian Jackson <Ian.Jackson@...citrix.com>,
Steven Rostedt <rostedt@...dmis.org>,
OGAWA Hirofumi <hirofumi@...l.parknet.co.jp>
Subject: Re: Powertop shows events/0 waking at high rate due to ptys
On 09/27/2010 11:15 AM, Alan Cox wrote:
> Really the line discipline should wake the work queue when it sets
> tty->receive_room non-zero, but while only n_tty currently uses that
> facility the existing code doesn't do it in any kind of race-free manner
> and sometimes is only saved by the polling picking it up.
>
> It's all really just a symptom of the fact that input and output buffers
> shouldn't be attached to the tty in the first place but to a struct
> representing the physical port. Fix that and the race conditions in
> serial output go away, as do the potential crashes and this wakeup stuff
> as well as a ton of locking in the irq/tx/rx paths. In several cases it
> also saves you an entire copy.
>
> Unfortunately while I got the tty port structures into lots of places
> needed the job never gone done.
OK, so it sounds like there's a basic design problem here which will
need some non-trivial work to fix. In the meantime we'll need to look
at doing something to work around the issue, since it ends up consuming
a non-trivial amount of CPU in events/0. I guess reducing HZ would be
the first, simplest thing to do, but changing xenconsoled to avoid
writing to readerless ptys might not be too hard.
Thanks,
J
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists