Re: Debugging udevd startup time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Kay Sievers wrote:
> In many cases it's the loading of modules which is pretty expensive.
> Sometimes rules are doing weird things. Sometimes just a single device
> blocks the wait-for-all settle call.
>
> On the box with the 3 seconds, what devices are left when you limit the timeout?
>   udevadm trigger; udevadm settle --timeout=2
>   

The above command outputs nothing,

> How long does udev take on the running box?
>   

I captured the output of the monitor during the above command, here's
the first KERNEL event and the last UDEV event on the running system:

KERNEL[1242835745.179673] add      /devices/LNXSYSTM:00 (acpi)
UDEV  [1242835748.458242] add     
/devices/pci0000:00/0000:00:06.0/usb4/4-1/4-1.1/4-1.1:1.0/bluetooth/hci0
(bluetooth)

> What does:
>  $ time (udevadm trigger -Snet; udevadm settle)
> print? That should show the time while no more modules need to be loaded.
>   

mecbuk cups # time (udevadm trigger; udevadm settle)

real    0m2.579s
user    0m0.013s
sys     0m0.011s

Subsequent calls shows 1.7~, 1.5~, 1.9~, 2.0~ seconds.

> How big are the rules you use?
>   wc -l /etc/udev/rules.d/* /lib/udev/rules.d/* /dev/.udev/rules.d/*
>   
mecbuk cups # wc -l /lib/udev/rules.d/* /etc/udev/rules.d/*
/dev/.udev/rules.d/* | tail -n1
wc: /dev/.udev/rules.d/*: No such file or directory
  1817 total

A typical udev, udev-extras installation + 1-2 extra rules like gphoto2,
wacom, bluez, etc.

> What does:
>   udevadm test foo
> print?
>   

mecbuk cups # udevadm test
foo                                                            
run_command: calling:
test                                                                
udevadm_test: version
142                                                                 
This program is for debugging only, it does not run any program,
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

parse_file: reading '/lib/udev/rules.d/10-lirc.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-alsa.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-gentoo.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-ia64.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-infiniband.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-isdn.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-pilot-links.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-zaptel.rules' as rules file
parse_file: reading '/lib/udev/rules.d/50-firmware.rules' as rules file
parse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-cdrom_id.rules' as rules file
parse_file: reading '/etc/udev/rules.d/60-libgphoto2.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-logitechmouse.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-pcmcia.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as
rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as
rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules'
as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as
rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules
file
parse_file: reading '/lib/udev/rules.d/60-wacom.rules' as rules file
parse_file: reading '/lib/udev/rules.d/61-mobile-action.rules' as rules file
parse_file: reading '/lib/udev/rules.d/61-option-modem-modeswitch.rules'
as rules file
parse_file: reading '/lib/udev/rules.d/61-persistent-storage-edd.rules'
as rules file
parse_file: reading '/lib/udev/rules.d/64-device-mapper.rules' as rules file
parse_file: reading '/lib/udev/rules.d/64-md-raid.rules' as rules file
parse_file: reading '/lib/udev/rules.d/70-acl.rules' as rules file
parse_file: reading '/lib/udev/rules.d/70-bluetooth.rules' as rules file
parse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules file
parse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules
file
parse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as
rules file
parse_file: reading
'/lib/udev/rules.d/75-persistent-net-generator.rules' as rules file
parse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules file
parse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules file
parse_file: reading '/lib/udev/rules.d/90-hal.rules' as rules file
parse_file: reading '/lib/udev/rules.d/91-drm-modeset.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules file
parse_file: reading '/lib/udev/rules.d/97-bluetooth-pcmcia.rules' as
rules file
parse_file: reading '/lib/udev/rules.d/99-comar-ethernet.rules' as rules
file
parse_file: reading '/lib/udev/rules.d/99-comar-wireless.rules' as rules
file
parse_file: reading '/lib/udev/rules.d/99-fuse.rules' as rules file
udev_rules_new: rules use 78048 bytes tokens (6504 * 12 bytes), 17584
bytes buffer
udev_rules_new: temporary index used 28500 bytes (1425 * 20 bytes)

--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Linux DVB]     [Asterisk Internet PBX]     [DCCP]     [Netdev]     [X.org]     [Util Linux NG]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux