Repository navigation
Default XMRig logging to plain output and record the logging values in the support bundle - #693
Conversation
…ng values in the support bundle (#530) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…nts them (#530) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
FAIL What I investigatedThe code and unit-tier proof for #530 hold at head 63b27eb. I am returning it because the diff changes the XMRig config RigForge renders for a real miner and no tier4-e2e job on the head shows real XMRig accepting it.
Reviewed head: What are the gaps
|
…t phase (#530) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
PASS What I investigatedThis is a round-2 re-review of the worker's two new commits, 63b27eb..7eb1a7a: two #530 assertions in phase_connect of tests/e2e-pithead.sh, the matching worker-proof pass counts, and a mkdir in the fixture of tests/test-xmrig-logging.sh. The round-1 return is fixed. tier4-e2e job 4000 ran head 7eb1a7a and concluded success. On it, real XMRig ran the config this branch rendered, got a share accepted, and the new config row checked colors false and print-time/health-print-time 60. The new xmrig.log no-ANSI row cannot fail, as XMRig's own source shows (note below), but the required proof holds without it.
Reviewed head: |
* test: reproduce ignored XMRig thread caps and native ceiling * test: protect thread-profile credentials and failure restoration * test: scope thread-profile cleanup to its active snapshot * fix(xmrig): cpu.rx speaks only the forms XMRig 6.26 honors (#588) XMRig 6.26.0 parses cpu.rx as a per-thread array or a profile object; a bare integer falls back to the full-core default, so the setup cap was silently ignored and autotune benchmarked against a knob it never set. cpu.rx is now written in exactly the forms XMRig honors: omitted for auto, a {mode,threads,max_threads_cnt,intensity,affinity} object when a count is requested, or the observed auto array. A bounded probe run (sink pool, no HTTP/DAEMON/MSR) observes the auto profile XMRig picks on this box; every requested count - the setup cap and each tune candidate - is clamped to it, so a cap can never raise thread count. Readers (RX_SETUP_THREADS display, tune knobs, overrides) accept all forms. Helpers live in util/rx-profile.sh, sourced beside the script: SCRIPT_DIR is the worker home under RIGFORGE_HOME, not the script tree. The e2e assertion counting threads through /2/backends stays gated to bench-ci hardware (bench-ci#2248). * style: shfmt thread-profile registration Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(xmrig): harden the auto-profile probe and shared-host object profiles (#588) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test: keep CI-pinned shfmt formatting and adapt the container tune fixture (#588) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(xmrig): quiet probe when no miner is available, cache the auto profile across tune candidates (#588) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test: keep tests/run.sh inside its file budget (#588) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test: thread-profile stays an explicit phase, outside all (#588) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * refactor: build the tune candidate thread profile through one helper (#588) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(xmrig): auto tune candidates reset inherited counts; per-run auto cache; probe binary from the worker tree (#588) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(xmrig): cache the observed auto array across tune subshells and confine the probe binary to build dirs (#588) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(xmrig): an object cpu.rx keeps its keys when the cap or auto ceiling clamps it (#588) Only threads and max_threads_cnt move; mode, intensity and affinity stay as pinned. Overlay-pinned objects generated unchanged below the ceiling; tune candidates clamp the same way; setup sizing reads the thread count from an object overlay pin. Co-Authored-By: Claude Code <noreply@anthropic.com> * Merge develop (XMRig logging defaults #693) and trim the budget ceilings (#588) Fold #693's logging defaults in; keep rigforge.sh and tests/run.sh inside their recorded file-budget ceilings by single-lining the thread-profile suite registration and the tune-knob profile pick. Co-Authored-By: Claude Code <noreply@anthropic.com> --------- Co-authored-by: pithead-developer[bot] <4933481+pithead-developer[bot]@users.noreply.github.com> Co-authored-by: Vijit Singh <vijit.n.singh@gmail.com> Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
What's the problem
Closes #530
RigForge set only
log-fileamong XMRig's logging keys, so every Linux rig ran XMRig's desktop defaults: ANSI colours in the journal andxmrig.log(the cause of the #483 and #477 workarounds), and no recorded values for the cadence and verbosity keys. Thexmrigoverlay (#526, merged in #604) already carries the five keys, so this builds the issue on it as ruled by the owner (no one-off key path, no branch on the unmerged overlay).How I fixed it
generate_xmrig_configemitscolors: falseon Linux and keeps XMRig'sprint-time: 60andhealth-print-time: 60. The overlay merges after them, socolors,print-time,health-print-time,verboseandsyslogall round-trip through"xmrig": {...};verboseandsyslogstay unset by default.support-bundleaddsxmrig-logging.jsonwith the five values in effect, filling XMRig's defaults for absent keys (_xmrig_logging_in_effectinutil/xmrig-overlay.sh, sorigforge.shstays under its file budget).docs/configuration.mdlists the new static defaults;docs/operations.mddocuments the five keys, a longer cadence for the capped appliance journal, andverboseas the pool-handshake debugging path.logs --verboseis not added, as the issue specifies.Here is the proof
bash tests/run.sh: 2695 passed, 0 failed (local, before the review fixes). GitHub CI on head 7eb1a7a: all ten checks pass, including Test suite, Coverage (kcov + diff-cover), End-to-end (Docker) and Lint (shellcheck + shfmt). Newtests/test-xmrig-logging.sh(11 rows: Linux defaults, overlay round-trip of all five keys, bundle values includingfalseand0); a bundle row intests/run.sh; plain and ANSI journal rows for_msr_log_status(doctor) and the e2e journal matcher.tests/test-xmrig-logging.sh(11 passed),bash -n tests/run.sh,FILE_BUDGET_REQUIRE_BASE=1 bash scripts/lint-file-budget.sh(OK) andmake lint-topology(OK). The one plain-journal doctor row added after the full run was not re-run on its own; GitHub CI covers it.make lintfails locally only on shfmt diffs that also exist on unmodifiedHEADfiles (local shfmt 3.13.1); shellcheck on changed files reported nothing new.develop.phase_connectintests/e2e-pithead.shnow asserts that the config rendered by this branch carriescolors: false,print-time: 60andhealth-print-time: 60, and that thexmrig.logthe live XMRig wrote (truncated before the restart) holds no ANSI escape.tests/worker-proof.pyandtests/test-worker-proof.shcarry the new pass counts (connect10, replay groups 11). Submittedtier4-e2ephases=connectas job 4000 at head 7eb1a7a; its uneditedbench-ci evidenceblock follows. Rows 45 and 46 of the job log are the two new(#530)assertions, both passing on the live miner.bench-ci job 4000@7eb1a7ae5e49a77bf85e69a21aca404812ed37f6 · rigforge · tier4-e2e
options: {"phases": ["connect"]}
status: completed · conclusion: success · exit 0 · 3m 08s
baseline verified: yes · rig restored: yes
node guard: not recorded · no comparison recorded
steps: checkout success · reserve success · preflight success · run success · collect success · restore success · cleanup success
rows: 10 pass · 0 fail · 0 skip
Generated by
bench-ci evidence 4000@7eb1a7ae5e49a77bf85e69a21aca404812ed37f6; re-run it to check.The
mktempstderr noise in the newtests/test-xmrig-logging.shis fixed with amkdirof the build directory in its fixture;tests/test-xmrig-overlay.shstill prints it and is not touched here.Verifier review: the duplicated
parse_caseand the vacuous parse assertion were fixed and the doctor plain-journal row added. Left as is: hardcoded XMRig defaults in the bundle fallback (they describe XMRig's own behaviour), and no macOS render test.Ponytail pass: nothing cut; no new CLI flag or abstraction.