Repository navigation
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
WalkthroughThe SLURM test runner changes fallback job-ID retrieval and progress-watcher commands. Redirects and filters now run on the local side of SSH. ChangesSLURM sbatch test execution
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Suggested reviewers: Merge Risk: ⚪ Minimal · up to
|
PerfSanity stages on oci-jhb and oci-aga (the GB300 stages) do not upload their perf folders, the per-test aggr_upload-*/disagg_upload-* folders with the server logs and cache_transceiver_precheck data. Nothing is logged. Since NVIDIA#14138 the sbatch path lists these folders with find '<ws>' ... -name 'aggr*' -o -name 'disagg*' ... -print 2>/dev/null Both consumers paste that command between single quotes, which strips its inner single quotes, and sshd runs it under svc_tensorrt's login shell. On oci-jhb and oci-aga that shell is csh. (oci-hsg also uses csh, but its sshd ForceCommand runs the command with bash.) Under csh the bare globs fail with "No match", and 2>/dev/null would become an extra argument plus a stdout redirect. The error is discarded locally, so the list comes back empty. Run only "find <ws> -mindepth 1 -maxdepth 1 -type d" remotely and keep the aggr/disagg folders with a local grep. Move the NFS cache-refresh command's redirects to the local side as well; under csh they wrote a stray file named 1 into svc_tensorrt's home. Also drop 2>/dev/null from the slurm_job_id.txt fallback read, which under csh always returned an empty job ID. Signed-off-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com>
…ts (NVIDIA#20261) PerfSanity stages on oci-jhb and oci-aga (the GB300 stages) do not upload their perf folders, the per-test aggr_upload-*/disagg_upload-* folders with the server logs and cache_transceiver_precheck data. Nothing is logged. Since NVIDIA#14138 the sbatch path lists these folders with find '<ws>' ... -name 'aggr*' -o -name 'disagg*' ... -print 2>/dev/null Both consumers paste that command between single quotes, which strips its inner single quotes, and sshd runs it under svc_tensorrt's login shell. On oci-jhb and oci-aga that shell is csh. (oci-hsg also uses csh, but its sshd ForceCommand runs the command with bash.) Under csh the bare globs fail with "No match", and 2>/dev/null would become an extra argument plus a stdout redirect. The error is discarded locally, so the list comes back empty. Run only "find <ws> -mindepth 1 -maxdepth 1 -type d" remotely and keep the aggr/disagg folders with a local grep. Move the NFS cache-refresh command's redirects to the local side as well; under csh they wrote a stray file named 1 into svc_tensorrt's home. Also drop 2>/dev/null from the slurm_job_id.txt fallback read, which under csh always returned an empty job ID. Signed-off-by: Chuang Zhu <111838961+chuangz0@users.noreply.github.com> (cherry picked from commit 5828d4f)
5f48562 to
5828d4f
Compare
Dev Engineer Review
jenkins/L0_Test.groovynow lists top-level performance directories with remotefindand filters foraggranddisagglocally. It also removes2>/dev/nullfrom the remote job-ID fallback read, avoiding csh redirection behavior. No test results or end-to-end verification are available.QA Engineer Review
No test changes.
Per-File QA Perspective
jenkins/L0_Test.groovy: Verify that the progress watcher discovers and copies the expectedaggranddisaggfolders on csh and bash login shells. Verify that a missingslurm_job_id.txtstill reaches the intended typed error path.Description
Symptom. The test-results tarballs of PerfSanity stages that run on oci-jhb or oci-aga (the GB300 stages) contain only
results*.xml,passed_test_list.txtandunfinished_test.txt. The per-testaggr_upload-*/disagg_upload-*folders are missing, and with them the server logs and thecache_transceiver_precheck/{logs,status,progress,rendezvous,csv}data. Stages on oci-hsg (GB200) and nsc-svg (DGX_B200) still have the folders. This affects both aggregated and disaggregated PerfSanity stages, and it happens whether pytest passes or not. No error is printed.Sampled successful PerfSanity tarballs, main L0_PostMerge #2993–#3018:
ForceCommandthat runs the command with bash/bin/csh/bin/csh/bin/cshexec bash -c "$SSH_ORIGINAL_COMMAND")/bin/bashCause. #14138 moved the perf-folder listing into
sshListPerfCmd:Both consumers paste this command between single quotes:
SLURM_SSH_LIST_PERF_CMD='${sshListPerfCmd}'forprogress_upload_watcher.sh, andeval '${sshListPerfCmd}'in the final snapshot. That strips the inner quotes, so the remote side receives-name aggr* -o -name disagg*. sshd then runs the command with svc_tensorrt's login shell.bsd-cshon these Ubuntu login nodes), the bare globs fail withNo match. Even with the quotes intact,2>/dev/nullbecomes an extra argument2plus a stdout redirect to/dev/null.The error goes to stderr, which the local
2>/dev/nulldiscards. The folder list comes back empty, so the scp loop never runs.Fix.
find <ws> -mindepth 1 -maxdepth 1 -type dremotely, with no quotes, globs or fd redirects. Keep theaggr*/disagg*folders with a localgrep -e /aggr -e /disagg. The workspace path only contains[a-z0-9._-], so it is safe unquoted in both shells.2>/dev/nullfrom theslurm_job_id.txtfallback read. Under csh it always returned an empty job ID, for the same reason.Test Coverage
No CI test covers the Jenkins-side copy logic. Manual verification:
VAR='<cmd>'+eval "$VAR", andeval '<cmd>'. The remote shell was/usr/bin/bsd-cshand then/bin/bash:aggr_*anddisagg_*directories under both shells, skipping other directories and files.cat <file> 2>/dev/null || truereturns empty underbsd-csh; without the redirect it returns the file content.pre-commitpasses.To check end to end, run a GB300
Disagg-PerfSanitystage that lands on oci-jhb or oci-aga. Itsresults-<stage>.tar.gzshould then contain thedisagg_upload-*folder.PR Checklist
Please review the following before submitting your PR:
PR description clearly explains what and why. If using CodeRabbit's summary, please make sure it makes sense.
PR Follows TRT-LLM CODING GUIDELINES to the best of your knowledge.
Test cases are provided for new code paths (see test instructions)
If PR introduces API changes, an appropriate PR label is added - either
api-compatibleorapi-breaking. Forapi-breaking, includeBREAKINGin the PR title.Any new dependencies have been scanned for license and vulnerabilities
CODEOWNERS updated if ownership changes
Documentation updated as needed
Update tava architecture diagram if there is a significant design change in PR.
The reviewers assigned automatically/manually are appropriate for the PR.
Please check this after reviewing the above items as appropriate for this PR.
GitHub Bot Help
To see a list of available CI bot commands, please comment
/bot help.🤖 Generated with Claude Code