Skip to content

Design discussion: WorkerPool vs. node-level Actor runtime #793

Description

@WenYuLuo

Context

A WorkerPool is currently reconciled into a Deployment of Worker Pods. Each
Worker has a single Actor assignment, and the scheduler selects an available
Worker:

Actor-level resource requests are not currently part of ActorTemplate or
WorkloadSpec; resource configuration is attached to the Worker Pod:

The current networking/runtime implementation also assumes at most one active
Actor per Worker.

Design question

What concrete requirement motivates using a Worker Pod as the capacity unit,
rather than a node-level DaemonSet/agent that manages multiple per-Actor gVisor
or microVM sandboxes?

The sandbox appears to provide the primary Actor isolation boundary. Node
capabilities such as /dev/kvm, mounts, and networking could also be exposed
to a node-level runtime manager. The current WorkerPool model may introduce
fixed-size resource bins and additional Pod/runtime overhead, while a node
failure still affects all Worker Pods on that node.

Discussion points

  • Is WorkerPool intended to represent warm concurrency slots, resource
    classes, or a security/failure domain?
  • How should heterogeneous Actor CPU/memory requirements be modeled and
    scheduled?
  • What Pod-specific property is required beyond the sandbox and runtime
    manager?
  • Could WorkerPool represent a runtime/resource class while a node-level
    agent schedules multiple Actor sandboxes?

I may be missing constraints around security, snapshot locality, or runtime
lifecycle. The goal of this issue is to clarify the intended abstraction and
trade-offs, rather than propose an immediate implementation change.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions