Commit Graph
29 Commits
Author SHA1 Message Date
Dean f4970371da Merge pull request #6459 from angleboyndn-stack/fix/trace-digest-largest-interval-phase
fix(tools): select largest interval phase by duration
2026-10-19 16:52:27 +13:00
JJenkx 97a8f1c7c9 fix(tools): classify wait subscopes in trace digests 2026-10-18 20:51:26 -04:00
Dean bb2624a533 Merge pull request #6395 from IshmamDC217/fix/trace-digest-missing-summary
fix(tools): fail when the trace_digest --summary file does not exist
2026-10-18 17:51:51 +13:00
Alex Callisaya 9cc8e2c081 fix(tools): clip trace digest totals to the frame window 2026-10-18 00:11:15 -04:00
Dean 3e834468cd Merge pull request #7162 from MrMha/fix/trace-input-diagnostics-20261017
fix: report trace digest input failures without a traceback
2026-10-18 09:54:32 +13:00
MrMha 7974214c08 fix: report trace digest input failures without a traceback 2026-10-17 18:53:29 +04:00
pushkarreddyy 372705c8d0 fix(tools): accept top-level event arrays and empty documents in trace_digest 2026-10-17 19:18:07 +05:30
Dean 3a26ce271d Merge pull request #6430 from MrMha/fix/trace-markdown-cells-20261015
fix: escape trace names in Markdown table cells
2026-10-18 02:12:55 +13:00
Dean 1efeb942b9 Merge pull request #6429 from MrMha/fix/trace-list-limits-20261015
fix: reject negative trace digest list limits
2026-10-18 02:12:17 +13:00
Ishmam Ahmed 041dbd240e fix(tools): fail when the trace_digest --summary file does not exist
load_summary returned None for a missing file whether the path was the
default aps5-summary.jsonl next to the trace or one named with
--summary. A mistyped --summary path was therefore silently ignored:
the digest printed "no summary line found" and, without the window end,
dropped the last frame of the window. Report an explicitly named file
that does not exist as a usage error; the default stays optional.
2026-10-16 01:02:51 +01:00
MrMha 4c64d39af5 fix: escape phase names in trace interval tables 2026-10-15 22:33:01 +04:00
ShinMalphur 9f7a8597b7 fix(tools): select largest interval phase by duration 2026-10-15 22:47:51 +06:30
MrMha 3929c9a49b fix: escape trace names in Markdown table cells 2026-10-15 18:59:10 +04:00
MrMha 03a9073104 fix: reject negative trace digest list limits 2026-10-15 18:58:49 +04:00
MrMha 857c35eb87 fix: reject invalid collapsed stack sample weights 2026-10-15 18:58:30 +04:00
Tomás Ortellado ed33660a80 fix(tools): include folded-only threads in trace digests 2026-10-15 10:17:22 -03:00
Adrià 598dd15954 Merge pull request #5763 from angleboyndn-stack/fix/trace-digest-gpu-mutex-waits
fix(tools): classify GPU mutex trace slices as waits
2026-10-15 14:48:45 +02:00
Adrià 92cdc7b622 Merge pull request #5768 from GalaxyGamingFR/fix/trace-digest-utf8-stdout
fix(trace_digest): print non-ASCII names on a legacy console
2026-10-15 14:46:44 +02:00
Adrià 705b32d919 Merge pull request #5719 from Ondra97/codex/fix-trace-uncompressed-summary
fix(tools): retain summaries for decompressed traces
2026-10-15 14:14:31 +02:00
Adrià 47d913be43 Merge pull request #5442 from ideabsassistenza/fix/trace-slice-boundaries
fix(tools): compare trace slice boundaries at nanosecond precision
2026-10-14 22:46:41 +02:00
Josip Parlov 99e5ef9803 feat(tools): trace_digest lists the largest GPU batches with the CPU slices that recorded them
With batch ids in the trace, the digest gains a Largest GPU batches
section: for the longest GPU batch slices, the GPU ranges inside each and
the CPU slices carrying the same batch id, inclusive. --json carries it as
largest_gpu_batches. Traces without batch ids are digested as before.
2026-10-14 14:08:52 +02:00
Adrià 2a99157640 Merge pull request #4812 from AlxcBTW/feat/trace-summary-interval
feat(agc): add APS5_TRACE_SUMMARY_EVERY for summary lines of a long session
2026-10-14 12:24:56 +02:00
GalaxyGamingFRandClaude Opus 5.5 c177bde316 fix(trace_digest): print non-ASCII names on a legacy console
On Windows, piped or redirected output uses the ANSI code page, so a
trace whose thread or slice names are not in cp1252 (a Japanese thread
name, for example) made the markdown digest stop with
UnicodeEncodeError after the work was done. stdout is now set to UTF-8
when the tool runs from the command line, as check_conventions.py does.
The --json output was not affected because json.dumps escapes non-ASCII.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 02:52:39 -07:00
ShinMalphur 97bb32d516 fix(tools): classify GPU mutex trace slices as waits 2026-10-14 16:21:35 +06:30
Ondra97 f6b9938d73 fix(tools): retain summaries for decompressed traces 2026-10-14 09:58:57 +02:00
ideabsassistenza 5e4d5e64ca fix(tools): compare trace slice boundaries at nanosecond precision 2026-10-13 21:52:37 +02:00
AlxcBTWandClaude Opus 5.5 52c71b837c feat(agc): add APS5_TRACE_SUMMARY_EVERY for summary lines of a long session
APS5_TRACE_SUMMARY_EVERY=<seconds> appends one line to aps5-summary.jsonl
every <seconds> seconds, at a present, from the per-scope totals the trace
threads already keep. No event buffer is allocated unless a window switch is
set as well; then the window records its full trace on top of the intervals
and its own summary line holds only the time inside the window. Each line has
the fields of the window summary line for its interval plus interval_start_s
and interval_end_s.

tools/trace_digest.py prints a summary file with interval lines as one row
per interval with a text sparkline of the frame p99 and the GPU busy time.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:40:52 +02:00
ArjenS-LA 819c475266 fix(tools): match explicit trace summaries to their capture 2026-10-12 15:18:16 -07:00
AlxcBTWandClaude Opus 5.5 ca219d1b67 feat(tools): digest a performance trace for an issue or a pull request
tools/trace_digest.py reads an APS5_TRACE_FRAMES capture (aps5-trace-*.json.gz)
and prints a markdown report of a few KB, or the same data as JSON: the
summary line from aps5-summary.jsonl, the slowest frames with their largest
slices, the busy, wait and untraced time of each thread, the largest slices
per frame, the longest waits, and with --stacks the hottest frames of an
APS5_SAMPLE_WORKER collapsed-stack file. Python standard library only; a
unittest checks every section on a small synthetic trace.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:33:18 +02:00