# Reads data from disk in advance and populates page cache
# to speed up subsequent disk access.
#
# Record:
#   start by `start prefetch_record` at appropriate timing.
#   stop by setting `prefetch_boot.record_stop` to 1.
#   set --duration to only capture for a certain duration instead.
#
# Replay:
#   start by `start prefetch_replay` at appropriate timing.
#   it will depend on several files generated from record.
#
#   replay is I/O intensive. make sure you pick appropriate
#   timing to run each, so that you can maximize the page cache
#   hit for subsequent disk access.
#
# Example:
#   on early-init && property:ro.prefetch_boot.enabled=true
#     start prefetch_replay
#
#   on init && property:ro.prefetch_boot.enabled=true
#     start prefetch_record
#
#   on property:sys.boot_completed=1 && property:ro.prefetch_boot.enabled=true
#     setprop prefetch_boot.record_stop 1

service prefetch_record /system/bin/prefetch record --duration ${ro.prefetch_boot.duration_s:-0}
    user root
    group root system
    disabled
    oneshot

service prefetch_replay /system/bin/prefetch replay --io-depth ${ro.prefetch_boot.io_depth:-2} --max-fds ${ro.prefetch_boot.max_fds:-1024}
    user root
    group root system
    disabled
    oneshot

service prefetch_apex_record /system/bin/prefetch record --duration ${ro.prefetch_boot.duration_s:-0} --include-mount-prefix /apex --tracing-instance prefetch_apex
    user root
    group root system
    disabled
    oneshot

service prefetch_apex_replay /system/bin/prefetch replay --io-depth ${ro.prefetch_boot.io_depth:-2} --max-fds ${ro.prefetch_boot.max_fds:-1024} --path /metadata/prefetch/prefetch_apex.pack
    user root
    group root system
    disabled
    oneshot

