Hi,<br>
<br>
    I've been investigating gnome startup time for the summer of<br>
code, and I've noticed that the startup time for X is on the order of<br>
4 seconds. That seems very slow.<br>
<br>
You can easily reproduce this by running xinit, and only starting<br>
xdpyinfo.  Time how long this takes to start and shutdown.  I'd had 3<br>
reports of this taking 3-4 seconds.  NOTE: All my measurements are on a warm disk<br>
cache.<br>
<br>
HOWTO reproduce: <br>
time xinit /usr/bin/xdpyinfo -- /usr/bin/X :0<br>
real    0m4.119s<br>
user    0m0.932s<br>
sys     0m0.344s<br>
[root@localhost ~]#<br>
<br>
<br>
Data:<br>
----<br>
<br>
Wall      <br>
Time           
CPU         
GPU           SW<br>
3-4s    AMD Turion64 ML-34 (1.8GHz)  Radeon XPRESS
200M 5955 (PCIE)   FC5 Xorg 7.0 (opensource ATI driver)<br>
4.023s  AMD Sempron 2200+            Radeon 9250 <br>
3.801s  AMD Athlon XP
2200+          Radeon 9700
Pro                 
Gentoo XOrg 7.0-r1, ATI drivers 8.23.7 , <br>
2.2s    AMD Athlon 64
3200+          Geforce4
440 Go
64M             
FC5 xorg-x11-server-Xorg-1.0.1-9.fc5.1.1 ("nv" driver
xorg-x11-nv-1.0.1.5-3.1 ) <br>
<br>
<br>
...<br>
<br>
<br>
I've done a little investigation, and it looks like the PCI probe code<br>
is going a little crazy.  I've straced the startup sequence for X. <br>
<br>
Problems: <br>
1) The X server explores all sorts of PCI devices that don't exist.<br>
<br>
Here's a sample: <br>
<br>
stat64("/proc/bus/pci/00", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0<br>
open("/proc/bus/pci/00/01.1", O_RDONLY) = -1 ENOENT (No such file or directory)<br>
stat64("/proc/bus/pci/00", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0<br>
open("/proc/bus/pci/00/02.0", O_RDONLY) = -1 ENOENT (No such file or directory)<br>
stat64("/proc/bus/pci/00", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0<br>
open("/proc/bus/pci/00/02.0", O_RDONLY) = -1 ENOENT (No such file or directory)<br>
stat64("/proc/bus/pci/00", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0<br>
open("/proc/bus/pci/00/03.0", O_RDONLY) = -1 ENOENT (No such file or directory)<br>
stat64("/proc/bus/pci/00", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0<br>
open("/proc/bus/pci/00/03.0", O_RDONLY) = -1 ENOENT (No such file or directory)<br>
stat64("/proc/bus/pci/00", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0<br>
open("/proc/bus/pci/00/04.0", O_RDONLY) = -1 ENOENT (No such file or directory)<br>
stat64("/proc/bus/pci/00", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0<br>
open("/proc/bus/pci/00/04.0", O_RDONLY) = -1 ENOENT (No such file or directory)<br>
stat64("/proc/bus/pci/00", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0<br>
open("/proc/bus/pci/00/05.0", O_RDONLY) = 6<br>
<br>
...<br>
<br>
This happens over 8 thousand times: <br>
<br>
[root@localhost ~]# grep open x_strace | grep ENOENT | grep "/proc/bus/pci" | wc   <br>
8353   83530  709040<br>
<br>
<br>
2) The code also opens "/proc/bus/pci/devices" again and again.<br>
<br>
[root@localhost ~]# grep open x_strace | grep "/proc/bus/pci/devices" | wc<br>
    178     712    7832<br>
<br>
...<br>
<br>
Software:<br>
FC5<br>
xorg-x11-drv-ati-6.5.7.3-4<br>
xorg-x11-server-Xorg-1.0.1-9.fc5.1.1<br>
<br>
Hardware:<br>
01:05.0 VGA compatible controller: ATI Technologies Inc ATI Radeon XPRESS 200M 5955 (PCIE)<br>
<br>
<br>
Any ideas on how to fix this? <br>
<br>
--Phil<br>
SoC blog:  <a href="http://ezolt.blogspot.com/">http://ezolt.blogspot.com/</a><br>
<br>
<br>
<br>
<br>
<br>