You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Opening this issue to track the foundational work around performance/scaling-oriented platform metrics that came up in #174 and in the load-testing threads (#168, #176, #98, #44). I proposing a high-level plan here first, but if we get too deep in the details (exact attributes, buckets, etc.), happy to open a Google Doc so we can discuss it there as well.
Scope
When we load test substrate today, we cannot really answer core operational questions with today's telemetry, e.g. is the fleet healthy under load, and where is the bottleneck?
We have three metrics total (rpc.server.call.duration, atenet.router.route.duration, atelet.snapshot.size), but nothing for lifecycle operations, pool saturation, or scheduling outcomes, and some components (ateom, atecontroller) emit no metrics at all. I think we have a good foundation in #174, so I am cleaning that up and using this to track the implementation.
otlp push instead of pull
Cardinality-wise actor, atespace, and session atrs go on traces/logs/events only, never on metric labels. Template, worker pool, sandbox class, outcome/phase, and cluster are the metric dimensions. We can add exemplars on the duration histograms, so a latency spike can be tracked back to a sampled actor trace. This can be a follow-up.
Opening this issue to track the foundational work around performance/scaling-oriented platform metrics that came up in #174 and in the load-testing threads (#168, #176, #98, #44). I proposing a high-level plan here first, but if we get too deep in the details (exact attributes, buckets, etc.), happy to open a Google Doc so we can discuss it there as well.
Scope
When we load test substrate today, we cannot really answer core operational questions with today's telemetry, e.g. is the fleet healthy under load, and where is the bottleneck?
We have three metrics total (
rpc.server.call.duration,atenet.router.route.duration,atelet.snapshot.size), but nothing for lifecycle operations, pool saturation, or scheduling outcomes, and some components (ateom, atecontroller) emit no metrics at all. I think we have a good foundation in #174, so I am cleaning that up and using this to track the implementation.pausecgroup #288), so just mentioning this here for context for nowInitial set of metrics
ateapi emits the lifecycle/scheduler/fleet signals, atelet emits the restore/checkpoint phase information.
ate.actor.lifecycle.operation.duration(operation.name,error.type, template, pool, sandbox class, snapshot kind)ate.actors(status, template)ate.workerpool.workers(pool,state, sandbox class)ate.scheduler.assignment.duration(pool,outcome,error.type)ate.actor.restore.duration/ate.actor.checkpoint.duration(phase, template, sandbox class, snapshot kind)cc Alex Van Boxel (@alexvanboxel) Julian Gutierrez Oschmann (@juli4n), Zoe Zhao (@zoez7), Eitan Yarmush (@EItanya)