Disk read ahead logic
systemd-readahead-replay.service
systemd-readahead-collect.service
systemd-readahead-done.service
systemd-readahead-done.timer /lib/systemd/systemd-readahead/systemd-readahead [OPTIONS...] COMMAND [DIRECTORY | FILE]
systemd-readahead-collect.service is a service that collects disk usage patterns at boot time. systemd-readahead-replay.service is a service that replays this access data collected at the subsequent boot. Since disks tend to be magnitudes slower than RAM, this is intended to improve boot speeds by pre-loading early at boot all data on disk that is known to be read for the complete boot process.
systemd-readahead-done.service is executed a short while after boot completed and signals systemd-readahead-collect.service to end data collection. On this signal, this service will then sort the collected disk accesses and store information about them in /.readahead.
Normally, both systemd-readahead-collect.service and systemd-readahead-replay.service are activated at boot so that access patterns from the preceding boot are replayed and new data collected for the subsequent boot. However, on read-only media where the collected data cannot be stored, it might be a good idea to disable systemd-readahead-collect.service.
On rotating media, when replaying disk accesses at early boot, systemd-readahead-replay.service will order read requests by their location on disk. On non-rotating media, they will be ordered by their original access timestamp. If the file system supports it, systemd-readahead-collect.service will also defragment and rearrange files on disk to optimize subsequent boot times.
systemd-readahead understands the following options:
--files-max=
Maximum number of files to read ahead. Only valid for thes collect command.
--file-size-max=
Maximum size of files in bytes to read ahead. Only valid for the collect and replay commands.
--timeout=
Maximum time in microseconds to spend collecting data. Only valid for the collect command.
-h, --help
Print a short help text and exit.
--version
Print a short version string and exit.
The following commands are understood by systemd-readahead:
collect [DIRECTORY]
Collect read-ahead data on early boot. When terminating, it will write out a pack file to the indicated directory containing the read-ahead data.
replay [DIRECTORY]
Perform read-ahead on the specified directory tree.
analyze [FILE]
Dumps the content of the read-ahead pack file to the terminal. For each file, the output lists approximately how much will be read ahead by the replay command.