ureadahead
Prefetch files into memory for faster startup
SYNOPSIS
ureadahead [OPTION...]
ureadahead [--daemon] [--force-record] [--dump-file-list [FILE]] ...
PARAMETERS
--daemon
Starts ureadahead in daemon mode, typically run automatically during system boot to record or prefetch files.
--debug
Enables debug output, which can be useful for troubleshooting issues or understanding its operation.
--dry-run
Performs a simulated run without actually modifying the pack file or preloading, allowing for testing.
--force-record
Forces the recording of file access patterns, even if a pack file already exists, overwriting previous data.
--help
Displays usage information and a list of available options, then exits.
--no-pack
Prevents the creation or updating of the readahead pack file during the current run.
--dump-file-list [FILE]
Dumps the list of files from the readahead pack file to standard output or the specified FILE.
DESCRIPTION
ureadahead (userspace readahead) is a daemon and utility designed to accelerate the boot process of a Linux system. It works by monitoring and logging the files accessed during the boot sequence. This logged information is then used on subsequent boots to "read ahead" those files into the system's memory cache, anticipating their need before they are actually requested. This reduces the time spent waiting for disk I/O, leading to faster startup times.
It typically creates a "pack file" (e.g., /var/lib/ureadahead/pack) containing the list of files and their order of access. While highly effective, ureadahead was primarily developed for and used by Ubuntu's Upstart init system. With the widespread adoption of systemd, its role has largely been superseded by systemd-readahead and systemd-analyze readahead functionality, which provide similar optimization capabilities native to systemd.
CAVEATS
ureadahead is largely considered deprecated on modern Linux distributions that use systemd as their init system. Its functionality has been superseded by systemd-readahead and systemd-analyze readahead. It might not be installed by default or even available in package repositories on some non-Debian/Ubuntu distributions. Using it on a systemd-based system that already employs systemd-readahead might lead to redundant efforts or conflicts.
PACK FILE
ureadahead stores the collected boot-time file access patterns in a special "pack file," typically located at /var/lib/ureadahead/pack. This binary file contains optimized data structures for efficient lookup and preloading. It is crucial for ureadahead's operation, as it dictates which files to prefetch and in what order on subsequent boots.
BOOT PROCESS INTEGRATION
On systems where ureadahead is active, it is typically launched very early in the boot process, often as one of the first services after the kernel has loaded. It records file accesses during one boot and then uses that record to prefetch files on subsequent boots, thereby making I/O operations more efficient and reducing perceived boot time.
HISTORY
ureadahead was originally developed by Ubuntu as a key component for accelerating boot times on systems using the Upstart init system. It gained prominence during Ubuntu 9.04 (Jaunty Jackalope) and continued to be a staple feature for several releases. Its design aimed to address the disk I/O bottlenecks during system startup. However, with the transition of many Linux distributions, including Ubuntu, to systemd as the default init system, ureadahead's role diminished. systemd introduced its own native readahead mechanism (systemd-readahead), which absorbed and improved upon the concepts pioneered by ureadahead, leading to its eventual deprecation in favor of the systemd integrated solution.
SEE ALSO
systemd-readahead(8), systemd-analyze(1), init(8)