docs: refresh tracing.md after NVTX completeness + correlation (#1852) - #1882
Conversation
Bring docs/tracing.md in line with the code after ai-dynamo#1852: - Add the metadata-exchange and mem-view call sites to the instrumented-ops table (loadRemoteMD, fetchRemoteMD, prepMemView, releaseMemView). - NVTX now attaches attributes as typed payloads (nvtxRangePopPayload), not key=value marks. - Cross-thread correlation is implemented (pushCorrelationId/popCorrelationId + request-handle-keyed correlation scope, recorded as the NVTX uint64 payload), not a planned no-op. - Planned-work cleanup: drop the now-done "NVTX completeness"; note UCX backend-engine sub-spans are not planned; keep Chakra + cross-rank. Signed-off-by: Efraim Eygin <eeygin@nvidia.com>
|
👋 Hi e-eygin! Thank you for contributing to ai-dynamo/nixl. Your PR reviewers will review your contribution then trigger the CI to test your changes. 🚀 |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Enterprise Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughUpdates docs/tracing.md to document expanded instrumented operations, NVTX typed payload attributes replacing key=value marks, expanded cross-thread correlation behavior using pushCorrelationId()/popCorrelationId(), and revised planned work items. ChangesTracing documentation
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
/build |
|
/ok to test 2d05d97 |
|
👀 Investigating |
|
🤖 CI Triage Agent — I now have a confident diagnosis. The evidence is conclusive:
Timestamps show continuous activity — this is a genuine assertion failure, not a hang or wall-clock kill. Summary: Sanitizer gtest suite failed because Root cause: During the new Implicated commit: 471a64e — "tracing: NVTX completeness + cross-thread correlation (#1852)", author e-eygin (dated 2026-07-03, same day as build #261). File: Suggested fix: In the Related: PR #1852 (root cause); PR #1288 (introduced the "fail on unexpected error/warning log" mechanism); PR #1709 (added the sanitizer CI builds). |
|
👀 Investigating |
|
🤖 CI Triage Agent — I now have a clear picture. Let me confirm the key detail: the segfaulting case is Looking at Summary: The Root cause: In the UCCL backend, cross-process local transfers to DRAM targets are the one path that is neither Implicated commit: File: Suggested fix: Make the cross-process local DRAM case explicitly take the RDMA path instead of a partially-initialized IPC path. Concretely: in (Note: the Python-side Related: PR #1428 (introduced local UCCL xfer); PR #1595 (unified get-param touched this plugin). No existing issue found specific to this segfault. Note: the build log contained what looks like an Azure storage account key on the
|
|
👀 Investigating |
|
🤖 CI Triage Agent — I have the log. The container image built successfully for both Looking at the log:
The failure signature: Both branches ( The salloc was invoked at This is a cluster resource-availability issue, not a code/build defect. The job stayed queued the entire hour because no Summary: The Root cause: Cluster resource starvation, not a code defect. Both parallel branches ( Implicated commit: unknown — not code-related. The build of commit d54a224 succeeded; the failure is in scheduler/infrastructure. File: unknown (Jenkins pipeline Slurm Suggested fix:
Related: none found. |
|
👀 Investigating |
|
🤖 CI Triage Agent — I have the logs. Let me analyze the failure. The Let me trace the relevant lines. The
This is a SLURM scheduling/resource issue, not a code defect. Let me confirm the timing and that no application/code output is implicated. The evidence is conclusive from the log itself — no source investigation is needed because this is an infrastructure resource-allocation failure, not a code or test failure. Timeline analysis:
The build and all actual NIXL EP tests passed. The only failing branch waited a full hour for a free Summary: The Root cause: SLURM resource-allocation timeout — Note: this is NOT a hang — the process was legitimately blocked in the SLURM queue for the full, explicitly-configured Implicated commit: unknown — not code-related (commit d54a224 built and tested successfully on the master-UCX track). File: SLURM allocation step in the Jenkins pipeline ( Suggested fix: Retry the build — this is a transient cluster-capacity failure. To reduce recurrence: (1) serialize or stagger the two UCX-variant EP branches so they don't both contend for a single Related: none found. |
|
/build |
|
👀 Investigating |
|
🤖 CI Triage Agent — Notably, PR #1882 (the triggering PR) is titled "docs: refresh tracing.md after NVTX completeness + correlation" — a documentation-only change. This strongly confirms the failure is unrelated to the PR's code content; it's a pure infrastructure/scheduling failure. The build phase succeeded entirely. The failure is purely in the Slurm allocation step waiting for GB200 nodes. Summary: The Root cause: Slurm resource-allocation timeout, not an application hang or code defect. Both parallel branches issued Implicated commit: none (infrastructure/capacity failure; PR #1882 d54a224 is docs-only and unrelated) File: Jenkinsfile "Allocate DL EP Environment" stage — Suggested fix: This is a transient cluster-capacity problem — retry the job when GB200 ( Related: PR #1882 (triggering PR, docs-only); no matching issue for the allocation timeout was found. |
What?
Update
docs/tracing.mdto match the tracing code after #1852 (NVTX completenessmain. Docs-only, no code changes.Why?
Several sections predated #1852 and were stale/misleading:
mem-view call sites.
key=valuemarks.How?
loadRemoteMD,fetchRemoteMD,prepMemView,releaseMemViewto theinstrumented-operations table (with their Kind + attributes).
nvtxRangePopPayload),not
key=valuemarks.pushCorrelationId()/popCorrelationId()+ a request-handle-keyed correlation scope, recorded asthe NVTX
uint64event payload, so apostXferReqand itsxfer.completeshare an id regardless of the emitting thread.
backend-engine sub-spans are not planned; keep Chakra + cross-rank correlation.
Test plan
Docs-only; no build/test impact. Rendered/reviewed the Markdown; the
instrumented-ops table and attributes were cross-checked against the call sites
in src/core/nixl_agent.cpp`.```
Summary by CodeRabbit