Maison > développement back-end > C++ > Comment faire % CPU

Comment faire % CPU

Patricia Arquette
Libérer: 2025-01-09 06:56:43
original
460 Les gens l'ont consulté

How to % CPU

Une question courante parmi les administrateurs système : "Comment puis-je générer rapidement une charge CPU factice sur cette machine ?" Si une simple charge CPU à 100 % sur un ou plusieurs cœurs est suffisante, la création d'une solution personnalisée est étonnamment simple.

La solution monocœur (One-Liner)

Cette seule ligne de code C, compilée et exécutée, fixera un cœur à 100 % d'utilisation :

int main() {while (1) {}}
Copier après la connexion

Compilez en utilisant gcc -o stressme stressme.c (ou cl stressme.c sous Windows) et exécutez avec ./stressme (ou stressme.exe). Pour stresser plusieurs cœurs, exécutez simplement plusieurs instances du programme.

Solution multicœur (multithread)

Pour des tests de stress multicœurs plus contrôlés, pensez à cette version multithread utilisant 4 threads POSIX :

#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;
}
Copier après la connexion

Compilez avec gcc -o multistress multistress.c -pthread.

Comment ça marche

La fonctionnalité principale est une simple boucle infinie (while (1) {}). Au niveau de l'assemblage, cela se traduit par une instruction jmp continue, maximisant l'utilisation du processeur. Les systèmes d'exploitation multitâches préemptifs modernes permettent à cette boucle de consommer du temps processeur sans rendre le système complètement insensible ; le processus peut toujours être terminé. En revanche, les anciens systèmes multitâches coopératifs se bloqueraient probablement à cause d’une telle boucle.

global _start

_start:
    jmp _start
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal