# Co tvůj modpack stojí

> Zátěžový test na tvém vlastním stroji: kolik lidí to unese, co povolí první a do kterého modu ten čas jde.

Source: https://stygion.eu/cs/docs/keystone/performance
Updated: 2026-09-07

„Kolik lidí ten server unese?" má každý majitel serveru a většina se to dozví ten večer, kdy na tom záleží. Tohle na to odpoví v úterý.

```
/keystone test 20
```

Půl minuty měří server prázdný, pak staví testovací hráče po skupinách, počká, až se to usadí, a skončí větou, kterou jde přečíst nahlas:

```
this machine held all 20 players (20.0 TPS at the end, 47.11 ms at the 95th);
every ten players cost about 8.55 ms a tick; at 20 it was using 47.11 ms
of the 50 a tick allows, leaving 2.89
```

`/keystone test stop` ho ukončí dřív; testovací hráči se uklidí tak jako tak.

## Co se měří a proč zrovna takhle

**Nejdřív prázdný server.** „Tick trval 34 ms" samo o sobě neznamená nic — každé číslo v reportu je rozdíl proti tomuhle stroji, tomuhle packu, tomuhle světu, dneska.

**Testovací hráči stojí daleko od sebe.** Tohle je ta část, kvůli které to funguje. Server tiká svět jen kolem hráčů, do vzdálenosti, kterou má v `simulation-distance` — a dvacet lidí na jedné hromádce drží tolik světa co jeden. Skuteční hráči jsou rozesetí po mapě a každý si do ticku táhne svůj kus. Poloměr kruhu se proto dopočítá z toho, jak daleko tvůj server doopravdy tiká, aby se dvě oblasti nedotýkaly.

Naměřeno na jednom 401modovém serveru v den, kdy se to spravilo: **10 block entities předtím, 29 815 potom.** Ten samý pack, ten samý stroj — jen hráči stáli tam, kde by stáli doopravdy.

**Příchod a stání jsou dvě různá čísla.** Připojený hráč nutí server načíst svět kolem sebe; stojící hráč ho nutí tikat to, co je načtené. Report je nemíchá, protože „unese šedesát" by jinak schovalo, že každý příchod je půlvteřinové zaseknutí — a to je to, co lidi cítí, a úplně jiná vada k opravě.

## Co povolilo první

Věta na konci pojmenuje, co došlo: **procesor**, **paměť**, **garbage collector**, nebo **načítání chunků**. Jsou to čtyři různé problémy se čtyřmi různými odpověďmi a vědět který je většina té práce. Za pomalým tickem se schovají všechny čtyři.

## Do kterého modu ten čas šel

Profil vzorkuje serverové vlákno a každý vzorek připíše modu, kterému patří třída na vrcholu zásobníku — takže z „tvůj tick trvá 20 ms" je „z toho 12 % je tenhle mod".

Dvě čísla, protože jsou to dvě otázky:

- **Podíl na ticku** — co ten mod stojí, když je všechno v pořádku. To je odpověď na „co mi žere výkon".
- **Podíl na pozdním čase** — čí kód běžel, když server přetáhl rozpočet. Prázdný na každém zdravém serveru, což je většina, a proto to není to hlavní číslo.

## Když to chceš sdílet

Po běhu se zeptá. Když řekneš ano, jde ven tohle a nic jiného: co bylo načtené, co je to za stroj a co se stalo. **Žádné jméno serveru, žádná adresa, žádný hráč, žádné id — ani náhodné.** Dostaneš zpátky adresu, kde to na [stygion.eu/performance](https://stygion.eu/performance) přistálo.

Proč to stojí za to: nikdo neví, co modpacky stojí. Doporučení „na tenhle pack dej 8 GB" se opisují po fórech a nikdo je nikdy neměřil. Když těch běhů bude dost, ta stránka odpoví na „unese moje mašina tenhle pack a dvacet lidí" **měřením**, ne odhadem — a taky na to, které flagy JVM doopravdy drží kolektor zkrátka.

Jednou denně k tomu jde pětiminutový vzorek běžného provozu. Umělá zátěž nikdy nenapodobí, co si v tom packu hráči postavili; tohle ano. Vypíná to:

```
/keystone set bench.share-live false
```

A vyprázdněné `bench.send-to` zastaví i běh, který bys zveřejnil ručně.

## Na co si dát pozor

- **Nepouštěj to hned po startu.** Server ještě dojíždí a test to změří jako svou odpověď.
- **Testovací hráči se na konci vždycky uklidí**, ať běh skončí jakkoliv — i když ho zastavíš, i když se do toho vypne server.
- **Nic z toho, co udělají, se nezapisuje do světa.**
- **Dva běhy jsou porovnatelné, jen když je změřila stejná generace měření.** Číslo generace jde s každým během a veřejná čísla je nikdy nemíchají — když se měření zlepší, staré běhy se nezahazují, jen se počítají zvlášť.
