Talos docs

GET /perf

Since 0.6
Plain text

Response

Response: PerfSample

One frame's cost, as the agent sees it.

FieldTypePresentDescription
presentationPresentationSamplesometimes
frameintegeralwaysThe frame these numbers describe.
frame_msnumberalwaysLegacy host frame cost; the app reports simulation-step cost here, not presentation cadence.
physics_msnumberalwaysTime inside the physics step.
script_msnumberalwaysTime inside behavior update and event dispatch.
render_msnumberalwaysTime inside render submission.
p95_frame_msnumberalways95th percentile of frame_ms over the last 120 frames.
draw_callsintegeralwaysDraw calls submitted for the last frame, every pass counted.
instancesintegeralwaysInstances submitted in the opaque pass.
trianglesintegeralwaysTriangles submitted in the opaque pass.
heap_mbnumberalwaysResident heap in mebibytes, or 0 when the host does not measure it.
entitiesintegeralwaysLive entities.
bodiesintegeralwaysRigid bodies in the physics world.
agentsintegeralwaysCrowd agents on the navmesh.
time_scalenumberalwaysSimulation time scale in effect (0 while paused).
pausedbooleanalwaysWhether the simulation is paused.
nonfinite_scrubbedintegeralwaysNon-finite floats scrubbed on the way out since process start. Non-zero means some subsystem produced a NaN or an infinity; see crates/query/src/finite.rs.
unwiredUnwiredCallsalwaysBehavior calls the engine recorded but could not act on, cumulative since load. See UnwiredCalls; all-zero is healthy and is what an empty scene reports.

Response: PresentationSample

FieldTypePresentDescription
presented_framesintegeralways
skipped_framesintegeralways
samplesintegeralways
fpsnumberalways
mean_interval_msnumberalways
p95_interval_msnumberalways
cpu_work_msnumberalways
present_wait_msnumberalways
physics_msnumberalways
script_msnumberalways
render_submit_msnumberalways
render_widthintegeralways
render_heightintegeralways
window_widthintegeralways
window_heightintegeralways
vsyncbooleanalways

Response: UnwiredCalls

Calls a behavior made that the engine recorded but could not act on.

FieldTypePresentDescription
audio_playintegeralwaysctx.audio.play for an asset with no registered sound.
particles_emitintegeralwaysctx.particles.emit with a preset name outside the eight the contract defines.
hud_setintegeralwaysctx.hud.set for a field nothing draws.
nav_speed_overrideintegeralwaysctx.nav.goTo(target, speed) with a speed: the crowd has no per-agent speed setter.
audio_busintegeralwaysctx.audio.play({ bus }) or ctx.audio.bus(name) naming a bus meta.audio does not declare. The cue still plays, on the default bus.
audio_snapshotintegeralwaysctx.audio.snapshot(name) with no such snapshot in meta.audio.snapshots.
audio_musicintegeralwaysctx.audio.music.play(layer) with no such layer in meta.audio.music.layers.
body_pushintegersometimesA ctx.body force, torque or impulse on a body that is not dynamic (kinematic or static), or through a handle whose body has gone. Nothing moved.
joint_ignoredintegersometimesA ctx.joint setMotor, stopMotor or setLimits on a fixed joint, or through a handle whose joint has gone. Nothing changed.
vehicle_ignoredintegersometimesA ctx.vehicle.drive on a vehicle the engine drives from the input actions (input: "auto"), or a ctx.vehicle call through a handle whose vehicle has gone. Nothing changed.

Example

curl "http://127.0.0.1:7700/perf"

Start a server with argus run --serve; the port is --port (7700 by default). The request and response fields are in the query API guide.