A common question among sysadmins: "How do I quickly generate dummy CPU load on this machine?" If a simple 100% CPU load across one or more cores is sufficient, building a custom solution is surprisingly easy.
The Single-Core Solution (One-Liner)
This single line of C code, compiled and run, will peg one core at 100% utilization:
<code class="language-c">int main() {while (1) {}}</code>
Compile using gcc -o stressme stressme.c
(or cl stressme.c
on Windows) and run with ./stressme
(or stressme.exe
). To stress multiple cores, simply run multiple instances of the program.
Multi-Core Solution (Multi-Threaded)
For more controlled multi-core stress testing, consider this multi-threaded version using 4 POSIX threads:
<code class="language-c">#include <pthread.h> #include <unistd.h> #define NUM_THREADS 4 void *loop(void *arg) { while (1) {} } int main() { pthread_t threads[NUM_THREADS]; for (int i = 0; i < NUM_THREADS; i++) { pthread_create(&threads[i], NULL, loop, NULL); } for (int i = 0; i < NUM_THREADS; i++) { pthread_join(threads[i], NULL); } return 0; }</code>
Compile with gcc -o multistress multistress.c -pthread
.
How It Works
The core functionality is a simple infinite loop (while (1) {}
). At the assembly level, this translates to a continuous jmp
instruction, maximizing CPU usage. Modern preemptive multitasking operating systems allow this loop to consume processor time without rendering the system completely unresponsive; the process can still be terminated. In contrast, older cooperative multitasking systems would likely freeze due to such a loop.
<code class="language-assembly">global _start _start: jmp _start</code>
The above is the detailed content of How to % CPU. For more information, please follow other related articles on the PHP Chinese website!