Skip to content

Network stack boot time optimization: decouple from DATA partition #637

@ytsssun

Description

@ytsssun

What I'd like:

I'd like to address a significant boot time optimization opportunity by decoupling the network stack initialization from local filesystem mounting in Bottlerocket.

Currently, the network stack waits for the DATA partition to be available due to an indirect dependency chain:

  1. Network services need files from the PRIVATE partition mounted at /var/lib/bottlerocket
  2. /var/lib/bottlerocket depends on /var being available
  3. /var is a bind mount to /local/var
  4. /local is the mount point for the DATA partition

This creates an artificial sequencing dependency that forces network initialization to wait for DATA partition setup, even though network configuration only requires files from the PRIVATE partition.

By creating a direct mount path to the PRIVATE partition that doesn't depend on the DATA partition, we can allow the network stack to initialize concurrently with local filesystem operations.

This issue is related to bottlerocket-os/bottlerocket#4348, which requests mounting BOTTLEROCKET-PRIVATE before BOTTLEROCKET-DATA to eliminate the dependency on the DATA partition for early boot operations. This network stack optimization addresses the same underlying architectural issue from a boot performance perspective.

Any alternatives you've considered:

I've considered alternative approaches such as:

  1. Prioritizing the DATA partition mount before other operations
  2. Optimizing the existing systemd service ordering

However, these approaches don't address the fundamental issue of unnecessary coupling between network initialization and local filesystem operations. The most effective solution is to properly decouple the network stack from local filesystem operations by eliminating the dependency path entirely.

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