Trace viewer
Страница /trace открывает финализированные .qs-trace.ndjson.gz dumps и показывает их как синхронизированную временную шкалу. Minecraft-сервер для просмотра не нужен. Файл распаковывается и разбирается локально в browser worker; viewer не загружает его и не делает network request для локального источника.
Открытие dump
- Завершите capture командой
/qs trace stopи дождитесь пути к финальному файлу. - Откройте Trace viewer.
- Выберите файл из
<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-источником без второго формата визуализации.