-
Notifications
You must be signed in to change notification settings - Fork 6
docs: add replica and buffer size explanation #210
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
90e6601
3df3d24
c3e6408
7e9ca1f
f0ac4dd
a4d4c30
902f7f5
0467cd5
e0b497f
670cd05
f2933d8
b14b843
601c1f4
71719ac
3855583
467ae6b
83b6101
b5e3997
1bcb598
1312cc1
6969496
c744aaf
c0d19ff
215a79d
5d9391b
e67c3ee
717dc4e
8bdc09b
0826c79
491b04c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,183 @@ | ||||||
| # Armada Replicas and Buffer | ||||||
|
|
||||||
| An Armada can spin up one game server, thousands of game servers, or anything in between, including no game servers as the special case of [Scaling Down](#scaling-down). | ||||||
| The number of game servers running in each Region Type is determined by the Replicas and Buffer settings: | ||||||
|
|
||||||
| - Minimum Replicas | ||||||
| - Maximum Replicas | ||||||
| - Buffer Size | ||||||
|
|
||||||
| When configured too high, it can lead to unnecessary costs, as game servers are running idle without players using them. | ||||||
| When configured too low, such as if not enough `Ready` game servers are available in time, it can lead to a poor matchmaking experience for players. | ||||||
|
|
||||||
|  | ||||||
|
|
||||||
| ## Minimum/Maximum Replicas | ||||||
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| Replicas are the number of game servers running in any given state, from `Starting` to `Ready`, from `Allocated` to `Unhealthy`, `Shutdown` or `Error`. | ||||||
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| No matter the state of the game servers, the **Minimum Replicas** setting makes sure there are at least that many game servers running at any given time. | ||||||
| If that is not the case, GameFabric spins up new game servers. | ||||||
|
|
||||||
| The **Maximum Replicas** setting makes sure no more game servers are started when the total number of game servers reaches that number. | ||||||
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| ## Buffer Size | ||||||
|
|
||||||
| The Buffer Size is the [approximate](#buffer-size-value) number of game servers that are kept in the `Ready` state, waiting to get `Allocated`. | ||||||
| This is important so players can find a game server quickly, without having to wait for a new game server to start up. | ||||||
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| ## Input Validation | ||||||
|
|
||||||
| When configuring an Armada, the following validation rules apply: | ||||||
|
|
||||||
| - Minimum Replicas must be at least as big as the Buffer Size | ||||||
| - Minimum Replicas must be smaller or equal to Maximum Replicas | ||||||
|
|
||||||
| whereas <span class="nbsp">`0, 0, 0`</span> is considered <span class="nbsp">[Scaling Down](#scaling-down).</span> | ||||||
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| ## Finding the Right Values | ||||||
|
|
||||||
| Finding the right values for Minimum Replicas, Maximum Replicas, and Buffer Size is non-trivial and relies on historical data, prior experience, and expectations of future demand. | ||||||
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
|  | ||||||
|
|
||||||
| ### Buffer Size Value | ||||||
|
|
||||||
| The Buffer Size is the number of `Ready` game servers. Even when no players are playing, these game servers are running and waiting for players to join. | ||||||
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| There is **no recommended default**, as it depends on multiple factors specific to each game. | ||||||
|
|
||||||
| **Important factors to determine the Buffer Size:** | ||||||
|
|
||||||
| 1. **Game server startup time:** | ||||||
|
|
||||||
| Quicker startup times reduce the need for a large Buffer Size. | ||||||
|
|
||||||
| 2. **Game session duration:** | ||||||
|
|
||||||
| Shorter game sessions increase the churn of players leaving and joining new game sessions, increasing the need for a larger Buffer Size. | ||||||
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| 3. **Concurrent users (CCU):** | ||||||
|
|
||||||
| More players increase the number of game servers that are `Allocated` at any given time, increasing the need for a larger Buffer Size. | ||||||
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| The Buffer Size should be derived from the experience made with Proof of Concepts, Load Tests or Development environments, | ||||||
|
||||||
| The Buffer Size should be derived from the experience made with Proof of Concepts, Load Tests or Development environments, | |
| The Buffer Size should be derived from experience gained from Proof of Concepts, Load Tests, or Development environments, |
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
antiphp marked this conversation as resolved.
Show resolved
Hide resolved
Copilot
AI
Feb 4, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The term "OOMKills" uses inconsistent capitalization. In Kubernetes terminology, it's typically written as "OOMKilled" (past tense) or "OOM Kill" (two words). Consider changing "OOMKills" to "OOM kills" for better readability and consistency with standard terminology.
| To avoid degraded performance with reduced CPU availability, or OOMKills when memory is overcommitted, see [Resource Limits](../multiplayer-services/resource-management#resource-limits). | |
| To avoid degraded performance with reduced CPU availability, or OOM kills when memory is overcommitted, see [Resource Limits](../multiplayer-services/resource-management#resource-limits). |
Uh oh!
There was an error while loading. Please reload this page.