Faster Boot with Many Devices
By Steve Sistare on Aug 01, 2014
In addition to its highly touted features such as Kernel Zones and Unified Archives, the just-released Solaris 11.2 has some nice unsung optimizations that are noticed less because everything works the same, but faster. One set of optimizations improves the scalability and efficiency of the devfsadm daemon, which is responsible for managing the namespace of devices under the /devices and /dev mount points in the filesystem. This daemon is very busy at boot time and during certain device configuration operations. For example, it accumulates 11 minutes of CPU time during boot on a system with 1000's of devices:
PID USERNAME NLWP PRI NICE SIZE RES STATE TIME CPU COMMAND 242 root 8 59 0 73M 72M sleep 11:03 0.00% devfsadm
Moreover, devfsadm is on the critical path during boot, and many SMF services depend directly or indirectly upon it completing the configuration of /dev, including for example the console login service.
We made many improvements to the userland and kernel components of devfs, including caching, hashing, and tuning timeouts. In one test, we measure the time from typing the OBP boot command to the appearance of the console login prompt. The system is a T5440 with 4000 disk devices, multi-pathed using MPxIO, which multiplies the number of device instances. The previous version of Solaris takes over 44 minutes, and Solaris 11.2 takes just over 3 minutes, for a 13X speedup. This is an old T-series processor, and both the old and new Solaris will be faster on a more recent processor such as the T5, but Solaris 11.2 will still reduce boot times by many minutes on current platforms with 1000's of devices. Your results will vary with device count. The algorithms we fixed have polynomial time complexity, so the times do not scale linearly. If your system has only 10's to 100's of devices, you might not notice the difference.
In addition to normal boot and reboot, commands for which we observe speedups include the following (but no doubt there are others I have missed):
- devfsadm -C : Clean up dangling /dev links
- reboot -r : reconfiguration reboot
- cfgadm -al : show status of dynamically reconfigurable hardware r esources
Do you configure systems with a huge number of devices? Does Solaris 11.2 make a difference for you? Please share your experiences.