performance of pci_device_get_{vendor, device}_name() in X server startup
Julien Cristau
jcristau at debian.org
Tue Jun 8 14:45:04 PDT 2010
On Tue, Jun 8, 2010 at 14:26:32 -0700, Richard Barnette wrote:
> In a recent investigation of system boot time for Chromium OS, I
> discovered that an inordinate amount of time during X server startup
> was going to processing required for pci_device_get_vendor_name() and
> pci_device_get_device_name(). The reason is straightforward: these
> routines operate by opening a compressed file, and then performing a
> linear search of the decompressed data (more than 600K worth) looking
> for the desired entries. For concrete numbers: not looking up the
> names on Chromium OS reference hardware (a netbook based on the Intel
> Pintrail chipset with SSD storage) is worth 400 ms boot time out of a
> 5 second total time budget.
>
> I'd like fix this with a patch to X upstream, so that the change doesn't
> have to be maintained as part of the Chromium OS sources. For a first
> cut, I can think of three obvious approaches:
> * Change xorg-server to simply drop the calls to get the vendor and
> device names.
> * A build or configure option in libpciaccess that disables the
> library
> routines (i.e. forces them to return NULL in all cases).
Can't you already configure libpciaccess with
--with-pciids-path=/nonexistent?
> * A runtime option to the X server that allows specifying the path to
> the "pci.ids.gz" or "pci.ids" file. Chromium OS could specify /
> dev/null
> to get the desired time savings. (This would mean touching both
> xorg-server and libpciaccess).
>
> I'd like advice/opinions on which of these might be the most eagerly
> embraced (or at any rate, least vigorously opposed :-) ), or whether
> there's a better idea I've overlooked.
>
Making these functions faster would seem like the best option, if at all
possible...
Cheers,
Julien
More information about the xorg-devel
mailing list