Skip to content

Stream placement

An Agora operator does not choose the server a broadcast will run on. They create the broadcast; where to put it is the control plane's decision. That decision is what placement means.

It is built that way because choosing a server is not a one-off decision but a standing one. A server goes into maintenance, a new one appears, broadcasts grow in number, one of them grows a ladder — and every time the arrangement has to be reconsidered. A person who placed broadcasts by hand is obliged to remember all of that forever; the control plane reconsiders on its own.

Placement: the last run and the history

A run

Placement works in runs. A run is one full reconsideration of the arrangement: the control plane looks at which broadcasts exist, which servers are alive and what they are busy with, and brings the assignments into line.

A run starts on its own whenever something that affects the decision changes: a broadcast is created or deleted, a server joins or drops out, settings change. The Run now button does the same by hand; it is rarely needed and mostly during an investigation.

The Last run card answers the question "is the arrangement fresh?": the number, the time, the outcome and three figures.

The run history

The table answers the question "why did this broadcast end up here" — it shows when the arrangement changed and what exactly changed:

  • Writes — how many assignments the run wrote.
  • Removals — how many broadcasts it took off servers.
  • Decisions — how many times it chose where to put a broadcast.
  • Outcomedone, or an error. An error has a text, and it is in the last column.

A run with zeroes in all three figures is normal and the most frequent case: the control plane looked and found nothing to change.

When a broadcast is placed nowhere

A broadcast can stay unplaced — the control plane has nowhere to put it. There are two usual reasons:

  • There are no live servers — all offline, or all already loaded.
  • No server fits — the broadcast needs something the servers do not have.

In that case the place to look is not placement but the list of streamers: placement only shows the result, and the cause is almost always that a suitable server genuinely is not there.

The Layout tab on a broadcast

Placement as a whole answers "what is going on in the cluster". The opposite question — "where does this particular broadcast live" — is asked on the broadcast's own card, on the Layout tab: it shows the assignment and which servers are carrying it.