Skip to main content

scx_pandemonium/cli/
stress.rs

1// CPU-PINNED STRESS WORKER FOR BENCH-SCALE
2// PURE COMPUTE SPIN LOOP. MATCHES THE WORKLOAD PROFILE OF BATCH CPU-BOUND TASKS.
3
4use std::sync::atomic::{AtomicBool, Ordering};
5
6static RUNNING: AtomicBool = AtomicBool::new(true);
7
8pub fn run_stress_worker(cpu: u32) {
9    ctrlc::set_handler(move || {
10        RUNNING.store(false, Ordering::Relaxed);
11    })
12    .ok();
13
14    unsafe {
15        let mut set: libc::cpu_set_t = std::mem::zeroed();
16        libc::CPU_SET(cpu as usize, &mut set);
17        libc::sched_setaffinity(0, std::mem::size_of::<libc::cpu_set_t>(), &set);
18    }
19
20    let mut x: u64 = 1;
21    while RUNNING.load(Ordering::Relaxed) {
22        x = x.wrapping_mul(6364136223846793005).wrapping_add(1);
23    }
24    std::hint::black_box(x);
25}