Перейти к основному содержимому

Trace viewer

Страница /trace открывает финализированные .qs-trace.ndjson.gz dumps и показывает их как синхронизированную временную шкалу. Minecraft-сервер для просмотра не нужен. Файл распаковывается и разбирается локально в browser worker; viewer не загружает его и не делает network request для локального источника.

Открытие dump

  1. Завершите capture командой /qs trace stop и дождитесь пути к финальному файлу.
  2. Откройте Trace viewer.
  3. Выберите файл из <gameDir>/questscript-traces/ или перетащите его на страницу.

Viewer сначала проверяет GZIP, NDJSON и schema version. Несовместимый, пустой или оборванный файл показывается как явная ошибка и не попадает в timeline.

Чтение timeline

  • Server ticks показывает реальные границы тиков, game logic, Script-attributable main-thread time и overrun относительно 50 ms.
  • Server Script, ScriptRunner и дополнительный Other lane используют исходные monotonic timestamps, не выдуманные worker ticks.
  • Колесо масштабирует шкалу. Shift с колесом или drag перемещает видимую область. Обычный drag выбирает диапазон.
  • Нажмите на тик, span или Host Object operation, чтобы увидеть IDs, lane, ticks, outcome и точные timestamps. Выбор execution подсвечивает связанные интервалы во всех lanes.

Summary над timeline показывает суммарное и median/p95/maximum Script main-thread time, долю tick time и число overruns. Таблица ниже сохраняет recorder-derived per-Script logical, active, wait, queue и handoff metrics.

В metadata отдельно показана Подготовка recorder. Это one-time duration между началом /qs trace start и готовностью armed session: проверки, snapshots, открытие spool и стартовые JVM diagnostics. Она завершается до первого capture tick и не входит ни в один tick duration или overrun.

Сам capture создаёт observer effect. Запись Host Object operations выполняется синхронно до возврата из Host Object wrapper и может входить во внешний guest span, поэтому показанные active, queue, tick и overrun metrics являются recorder-derived diagnostics, а не временем runtime без instrumentation. Для обычной проверки budget и queues сначала используйте /qs diagnostics threading; trace включайте только когда нужны полные tick/execution/operation records.

Result analyzer

После открытия dump viewer детерминированно строит result analysis в том же browser worker. Для threading-workload/1.0.0-rc.3 Script roles классифицируются как fan-out или writer, а язык берётся из header Script snapshot. Таблица показывает четыре наблюдаемые группы: fan-out JavaScript/Python и writer JavaScript/Python. Для каждой группы доступны количество Scripts и executions, active/server-thread/wait/queue time, await и operation counts, active time и operations на завершённый execution.

Вторая таблица агрегирует каждый raw Host Object operation по operation_kind, access mode и lane. Она показывает count, суммарную и среднюю recorded duration, result bytes, outcomes и boundary violations. Суммарная duration диагностическая: вложенные Host Object intervals могут перекрываться и поэтому не являются wall-clock временем capture.

Кнопка Скачать analysis JSON сохраняет локальный machine-readable результат. JSON содержит версию analyzer, raw SHA-256 входного dump, workload/prototype/host metadata, отдельный recorderPreparationDurationNanos, стабильно отсортированные группы и operation kinds, totals и mismatch warnings. Один и тот же dump даёт одинаковый JSON независимо от locale, масштаба timeline и выбора элементов. Неизвестные workload roles не угадываются по отображаемому тексту, а остаются в явной группе unclassified.

Completeness

Используйте capture для сравнения прототипов только при complete=true, совпавшем raw hash, отсутствии integrity errors, dropped events, open executions и truncated tick. benchmarkValid — отдельный результат workload validation; диагностический dump обычно оставляет его null.

Публичные ссылки и автоматическая загрузка не входят в текущую версию. Viewer уже отделяет источник байтов от parser/model/renderer, поэтому позднее локальный файл сможет быть заменён HTTP-источником без второго формата визуализации.