# The profiler: whose code it was

> /keystone profile samples the server thread with Flight Recorder and says, mod by mod, what each tick cost - with a flame graph, the costliest entities and the hottest chunks with whose claim they are. New in 0.3.

Source: https://stygion.eu/docs/keystone/profiler
Updated: 2026-10-25

New in 0.3, module `profiler`. It samples the server thread with Java's Flight Recorder - nothing is slowed down - and keeps the report as a page.

## Running it

- `/keystone profile [seconds]` (up to `max-seconds`, 300) starts a run; `/keystone profile last` says what the last one found (`keystone.profile`).
- The editor's **Profiler** screen starts runs, shows every report, and has a live mode that repeats ten-second runs while the screen is open.
- `POST /v1/profiler/start` (`operations.run`), `GET /v1/profiler`, `GET /v1/profiler/report`, `POST /v1/profiler/live` (`status.read`).

## What a report says

- Every mod in milliseconds of each tick, alone and with what it called.
- A flame graph of the server thread.
- The costliest kinds of entity and block entity (a jet engine, a drill).
- The hottest chunks, with whose claim they are and a teleport to go and look.

`keep` (20) reports are kept in `keystone/profiler`; the oldest go.

## Sharing

A report never leaves the server unless you turn `share.enabled` on and set `share.url`: an https address that takes the report as JSON (POST) and answers with a link in `{"url": …}` - your own page or a service you trust, with `share.key` as a Bearer token. Then `/keystone profile share <id>` or the editor's button sends it.
