FW-5 CPU Load & Thermal Control Test
| Domain | firmware | Module | — |
|---|---|---|---|
| Priority | high | Automated | no |
| Tags | stress | Requires | — |
| Depends on | MCT-5 (pass) | ||
Preconditions
- Robot turned ON
Steps
0. Clone the validation repo and copy the script to the robot
git clone git@git.nimblehub.io:integration/robot-validation.git
scp robot-validation/automation/scripts/cpu_thermal.sh root@10.42.0.106:/scripts/
1. Run the CPU thermal stress script
/scripts/cpu_thermal.sh
2. Review the generated report
Expected
- The machine sustains a full CPU load while holding temperature at the regulation target, aborts safely at the critical threshold, and leaves no worker processes behind. Check the generated report.
Notes
Verify the target can sustain a full CPU load without exceeding its safe thermal envelope, using a repeatable, self-limiting tool that controls temperature rather than only measuring it.
Thermal thresholds
- Regulation target — 85 °C: heavy sustained load with headroom, no throttling.
- Critical / abort — 95 °C: 5 °C below Tjmax; the test stops before hardware throttles.
- Tjmax (hardware) — 100 °C: Intel spec — the CPU self-throttles / shuts down.
The test aborts at 95 °C so it always stops before protective throttling (which would risk the machine and invalidate the load measurement). The script:
- locates the real CPU sensor (
coretemphwmon), ignoring unrelated sensors such as the WiFi chip; - spawns CPU load workers (
yes > /dev/null), one per logical core (max); - every 2 s reads the hottest core and adjusts — below target−2 °C → add a worker; above target → remove one; otherwise hold;
- at 95 °C prints
CRITICALand stops immediately; - on exit / Ctrl-C, a trap kills all workers (none left behind).