Measure output capture allocations for chunked writes
This commit is contained in:
@@ -17,8 +17,14 @@ needed by the caller, such as compiler identification. After the child stops,
|
||||
the capture's backing bytes transfer to the caller without a second copy. A
|
||||
failed output command returns both those bytes and an error containing the
|
||||
diagnostic text. The capture remains in memory for the duration of the child;
|
||||
an 8 MiB forwarded capture currently allocates about 8.39 MB per operation,
|
||||
with the returned 8 MiB slice owned by its caller. Failed output also formats
|
||||
the component benchmark compares one 8 MiB write with the same output in
|
||||
32 KiB writes, forwarding to `io.Discard`. Smaller writes incur buffer-growth
|
||||
allocations. The [workload-specific results](../roadmap/implementation.md#output-chunking-follow-up)
|
||||
record total allocated bytes per operation, excluding subprocess overhead and
|
||||
diagnostic strings. These totals count all allocations, including superseded
|
||||
buffers. The returned slice retains the final buffer holding the complete output.
|
||||
Peak live memory depends on buffer growth, garbage collection, and other command
|
||||
work and is not measured by allocation totals. Failed output also formats
|
||||
diagnostics into the error, so the returned bytes and diagnostic string can
|
||||
coexist. Disk-backed diagnostics could reduce large failure peaks, but add file
|
||||
lifecycle and cleanup work and remain a follow-up option.
|
||||
|
||||
Reference in New Issue
Block a user