vcs: hook sysfs devices into object lifetime instead of "binding"
authorKay Sievers <kay.sievers@vrfy.org>
Mon, 9 Mar 2009 13:18:52 +0000 (14:18 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 24 Mar 2009 23:38:26 +0000 (16:38 -0700)
commit4995f8ef9d3aac72745e12419d7fbaa8d01b1d81
tree32b86d8b5f5ccba8f367d3e911ba3d1e19d73729
parentce21c7bcd796fc4f45d48781b7e85f493cc55ee5
vcs: hook sysfs devices into object lifetime instead of "binding"

During bootup performance tracing I noticed many occurrences of
vca* device creation and removal, leading to the usual userspace
uevent processing, which are, in this case, rather pointless.

A simple test showing the kernel timing (not including all the
work userspace has to do), gives us these numbers:
  $ time for i in `seq 1000`; do echo a > /dev/tty2; done
  real    0m1.142s
  user    0m0.015s
  sys     0m0.540s

If we move the hook for the vcs* driver core devices from the
tty "binding" to the vc allocation/deallocation, which is what
the vcs* devices represent, we get the following numbers:
  $ time for i in `seq 1000`; do echo a > /dev/tty2; done
  real    0m0.152s
  user    0m0.030s
  sys     0m0.072s

Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/char/vc_screen.c
drivers/char/vt.c
include/linux/console.h