chiark / gitweb /
udevd: implement a more efficient queue file format
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>
Thu, 21 May 2009 20:22:37 +0000 (22:22 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Thu, 21 May 2009 20:22:37 +0000 (22:22 +0200)
commitf503f6b22fa54d1a65156a51d8b3311190c73ae5
tree5003144371ce463fe5ba2387b9777cd8cddd24ad
parentf9b3f88f71f5bdfb18aa4bfba00d72fa41fdf286
udevd: implement a more efficient queue file format

Directory lookups show up in profiling. The queue files are responsible
for a large proportion of file-related system calls in udev coldplug.

Instead of creating a file for each event, append their details to a
log file.  The file is periodically rebuilt (garbage-collected) to
prevent it from growing indefinitely.

This single queue file replaces both the queue directory and the
uevent_seqnum file. On desktop systems the file tends not to grow
beyond one page. So it should also save a small amount of memory in
tmpfs.

Tests on a running EeePC indicate average savings of 5% *udevd* cpu time
as measured by oprofile. __link_path_walk is reduced from 1.5% to
1.3%. It is not completely clear where the rest of the gains come from.

In tests running ~400 events, the queue file is rebuilt about 5 times.

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
configure.ac
udev/Makefile.am
udev/lib/exported_symbols
udev/lib/libudev-private.h
udev/lib/libudev-queue-export.c [new file with mode: 0644]
udev/lib/libudev-queue.c
udev/lib/libudev.h
udev/udevadm-settle.c
udev/udevd.c