Skip to content

Optimize boot time for Karnak #2

@488315

Description

@488315
  • Enable init bootcharting (bootchart start in init.rc)
  • Profile boot time with atrace and bootchart for timing bottlenecks
  • Analyze logcat -b all -v threadtime for slow service startups
  • Parallelize service startup in init.rc via class_start split
  • Move non-critical services to late_start class
  • Convert blocking import and on boot calls to property-based triggers
  • Reduce init.rc parse time by removing unused entries (e.g., legacy daemons)
  • Enable ZRAM with tuned swappiness in init.<board>.rc
  • Replace slow mounts with async vold/fs_mgr staging
  • Eliminate waits from boot (e.g., fsck, time sync) by caching where possible
  • Disable unnecessary SELinux audit spam (setenforce 1, use auditd or filter logs)
  • Use system/core/init/stats_event_logger.cpp for boot event tagging
  • Convert kernel logs to dmesg -T on device to analyze early kernel boot
  • Trim rc-based startup of SurfaceFlinger/zygote—trace using systrace
  • Optimize kernel command line (e.g., remove androidboot.console=tty0 if unused)
  • Enable ro.zygote.disable_gl_preload=true if no GL preload needed
  • Enable ro.zygote.preload.disable=true temporarily for baseline boot test
  • Benchmark bootloader-to-init timing via /proc/uptime snapshot in init
  • Trace HAL start delays via vintf_fragments, hwservicemanager, and servicemanager
  • Stub/disable heavy HALs (e.g., biometric, camera) to measure net improvement
  • Strip ro.hardware.* branches if they're loading unused modules
  • Enable ro.init.updatable_crashing_process.kill=true to kill stuck services
  • Build system_server with dexpreopt and enable system_server class preloading
  • Set ro.dalvik.vm.native.bridge=0 to disable unused libhoudini
  • Convert high-cost Java services to native where possible (defer with JobScheduler)
  • Enable native bridge preoptimization (ro.dalvik.vm.native.bridge.enable=0)
  • Reorder Soong modules for early boot service prioritization (e.g., libbase, liblog)
  • Tune init.environ.rc to reduce PATH, strip LD_PRELOAD, reduce ENV bloat
  • Disable update_engine if not used (update_engine.rc, boot control HALs)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions