Caching of information on udev


 * Summary: Caching device information on udev


 * Proposer: Lucas De Marchi (lucas.demarchi@profusion.mobi)

Description
Currently udev is the most widely used device manager on Linux. It is responsible for managing the /dev entries, and provides several useful actions to be run on specific occasions.

Right now udev does device discovery and setup on every boot. But usually this is not needed, especially on embedded devices where the hardware will not change over time. One major point of improvement then in order to speed boot now is to cache the information used by udev, and providing a way of verifying if this cache is still valid or if it needs to be re-done.

Udev has several builtin handlers to address changes in the system, as reported by the kernel: load modules, find firmware, apply rules to new devices, etc. The purpose of this project is to add the necessary infrastructure in udev so these builtin handlers can ask for caching the information they need and re-play them on next boot. This infrastructure will be evaluated by applying it to module loading: instead of probing the bus on every boot to decide we need to load a certain module, we can load it nonetheless because previous boots needed them. Later on boot sequence we can verify if they were indeed needed and cache for next boot.

This idea has already been discussed with the udev upstream, and they want to see how performance is improved by having such a cache. The intention is to implement this cache and create benchmarks for embedded devices, where usually the hardware is not changed between reboots.

Related work

 * http://en.wikipedia.org/wiki/Udev

Scope

 * 1) Implementation: 2 weeks
 * 2) Benchmark creation: 1 week
 * 3) Adapt to community feedback, tests and upstream: 2 weeks